MSP430系列單片機(jī)-Timer_A實(shí)現(xiàn)PWM
PWM信號(hào)是一種具有固定周期、不定占空比的數(shù)字信號(hào)。
如果Timer_A的計(jì)數(shù)器工作在增計(jì)數(shù)模式,輸出采用輸出模式7(復(fù)位/置位模式)
利用寄存器TAxCCR0控制PWM波形的周期,用其他某個(gè)寄存器TAxCCRx來(lái)控制占空比(t高電平/ T周期)
題目
設(shè)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; //設(shè)置PWM周期
CCTL1 = OUTMOD_7; //捕獲/比較控制寄存器設(shè)置輸出模式7
CCR1 = 384; //占空比384/512=0.75
CCTL2 = OUTMOD_7; //捕獲/比較控制寄存器設(shè)置輸出模式7
CCR2 = 128; //占空比128/512=0.25
P1DIR |= 0x04; //P1.2輸出
P1SEL |= 0x04; //P1.2為外設(shè)模塊 TA1
P2DIR |= 0x01; //P2.0輸出
P2SEL |= 0x01; //P2.0為外設(shè)模塊 TA2
TACTL |= MC0; //Timer_A控制寄存器設(shè)置為增計(jì)數(shù)模式
for (;;)
{
_BIS_SR(LPM3_bits); //進(jìn)入低功耗模式3
_NOP();
}
}
顯示輸出:
75%占空比如黃色波形所示
25%占空比如藍(lán)色波形所示
25%波形明明不對(duì)?。】晌乙膊恢朗裁丛?!仿真所用芯片為F249,代碼用的是msp430x44x.h