概念
PWM信號是一種具有固定周期、不定占空比的數字信號。
如果Timer_A的計數器工作在增計數模式,輸出采用輸出模式7(復位/置位模式)
利用寄存器TAxCCR0控制PWM波形的周期,用其他某個寄存器TAxCCRx來控制占空比(t高電平/ T周期)
題目
設ACLK = TACLK = LFXT1 = 32768Hz, MCLK = SMCLK = DCOCLK = 32 * ACLK = 1.048576MHz,利用TImer_A輸出周期 512/32768 = 15.625ms,占空比分別為75%和25%的PWM矩波形。
代碼如下:
#include “msp430x44x.h”
void main()
{
WDTCTL = WDTPW + WDTHOLD;
FLL_CTL0 |= XCAP14PF;
TACTL = TASSEL0 + TACLR; //ACLK,清除TAR
CCR0 = 512 - 1; //設置PWM周期
CCTL1 = OUTMOD_7; //捕獲/比較控制寄存器設置輸出模式7
CCR1 = 384; //占空比384/512=0.75
CCTL2 = OUTMOD_7; //捕獲/比較控制寄存器設置輸出模式7
CCR2 = 128; //占空比128/512=0.25
P1DIR |= 0x04; //P1.2輸出
P1SEL |= 0x04; //P1.2為外設模塊 TA1
P2DIR |= 0x01; //P2.0輸出
P2SEL |= 0x01; //P2.0為外設模塊 TA2
TACTL |= MC0; //TImer_A控制寄存器設置為增計數模式
for (;;)
{
_BIS_SR(LPM3_bits); //進入低功耗模式3
_NOP();
}
}
顯示輸出:
75%占空比如黃色波形所示
25%占空比如藍色波形所示
25%波形明明不對!!可我也不知道什么原因!仿真所用芯片為F249,代碼用的是msp430x44x.h