?? ta.c
字號(hào):
/****************************************************************************
* 文件名稱:
* TA.c
* 文件說明:
* 使用TA輸出PWM波形,可通過set_TA設(shè)定不同的模式
*****************************************************************************/
#include "msp430x44x.h"
/******************************************************************************
* 設(shè)置TimerA輸出PWM的工作模式
********************************************************************************/
void set_TA(int mode)
{
if (mode==2)
{ // 翻轉(zhuǎn)/復(fù)位模式,CCR1=25%,CCR2=75%
CCR0 = 511; // PWM 周期
CCTL1 = OUTMOD_2; // PWM toggle/reset
CCR1 = 384; // ccr1 Pwm cycle
CCTL2 = OUTMOD_2; // PWM toggle/reset
CCR2 = 128; // ccr2 Pwm cycle
P1DIR |= 0x04; // p1.2 模式設(shè)置
P1SEL |= 0x04; // p1.2 option select
P2DIR |= 0x01; // P2.0 output mode
P2SEL |= 0x01; // P2.0 option select
TACTL |= MC0; // 設(shè)置遞增模式
}else if (mode==0x03)
{ //置位/復(fù)位模式,CCR1=25%,CCR2=75%
CCR0 = 511; // PWM 周期
CCTL1 = OUTMOD_3; // PWM toggle/reset
CCR1 = 384; // ccr1 Pwm cycle
CCTL2 = OUTMOD_3; // PWM toggle/reset
CCR2 = 128; // ccr2 Pwm cycle
P1DIR |= 0x04; // p1.2 output mode
P1SEL |= 0x04; // p1.2 option select
P2DIR |= 0x01; // P2.0 output mode
P2SEL |= 0x01; // P2.0 option select
TACTL |= MC0; // 設(shè)置遞增模式
}else if (mode==0x04)
{ // 翻轉(zhuǎn)模式,CCR1=50%,CCR2=50%
CCR0 = 511; // PWM 周期
CCTL1 = OUTMOD_4; // PWM toggle/reset
CCR1 = 384; // ccr1 Pwm cycle
CCTL2 = OUTMOD_4; // PWM toggle/reset
CCR2 = 128; // ccr2 Pwm cycle
P1DIR |= 0x04; // p1.2 output mode
P1SEL |= 0x04; // p1.2 option select
P2DIR |= 0x01; // P2.0 output mode
P2SEL |= 0x01; // P2.0 option select
TACTL |= MC0; // 設(shè)置遞增模式
}else if (mode==0x06)
{ //翻轉(zhuǎn)/置位模式,CCR1=75%,CCR2=25%
CCR0 = 511; // PWM 周期
CCTL1 = OUTMOD_6; // PWM toggle/reset
CCR1 = 384; // ccr1 Pwm cycle
CCTL2 = OUTMOD_6; // PWM toggle/reset
CCR2 = 128; // ccr2 Pwm cycle
P1DIR |= 0x04; // p1.2 output mode
P1SEL |= 0x04; // p1.2 option select
P2DIR |= 0x01; // P2.0 output mode
P2SEL |= 0x01; // P2.0 option select
TACTL |= MC0; // 設(shè)置遞增模式
}else if (mode==0x07)
{ // 復(fù)位/置位模式
CCR0 = 511; // P1.2--> CCR1 - 75% PWM
// P2.0--> CCR2 - 25% PWM
// PWM 周期
CCTL1 = OUTMOD_7; // ccrl reset/set
CCR1 = 384; // ccr1 Pwm cycle
CCTL2 = OUTMOD_7; // ccr1 reset/set
CCR2 = 128; // ccr2 Pwm cycle
P1DIR |= 0x04; // p1.2 output mode
P1SEL |= 0x04; // p1.2 option select
P2DIR |= 0x01; // P2.0 output mode
P2SEL |= 0x01; // P2.0 option select
TACTL |= MC0; // 設(shè)置遞增模式
}
}
/****** 在Timer A的不同工作模式下輸出PWM波形 *****/
void main()
{
unsigned int pwm_Delay;
char tmpv,tmp[5] = {2,3,4,6,7};
WDTCTL = WDTHOLD + WDTPW; //關(guān)閉看門狗
tmpv=0;
while(1)
{
set_TA(tmp[tmpv]); //選擇 PWM 模式
tmpv = (tmpv + 1) % 5; //改變模式
for(pwm_Delay=0;pwm_Delay<0xffff;pwm_Delay++);//delay
};
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -