看了下官方实例
#include <msp430x44x.h>
void main(void)
{
WDTCTL = WDTPW +WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP14PF; // Configure load caps
TACTL = TASSEL1 + TACLR; // SMCLK, Clear Tar
CCR0 = 512-1; // PWM Period = 488uS
CCTL1 = OUTMOD_7; // CCR1 reset/set
CCR1 = 384; // CCR1 PWM duty cycle
CCTL2 = OUTMOD_7; // CCR2 reset/set
CCR2 = 128; // CCR2 PWM duty cycle
P1DIR |= 0x04; // P1.2 output
P1SEL |= 0x04; // P1.2 TA1 option
P2DIR |= 0x01; // P2.0 output
P2SEL |= 0x01; // P2.0 TA2 otion
TACTL |= MC0; // Start Timer_A in up mode
for (;;)
{
_BIS_SR(CPUOFF); // Enter LPM0
_NOP(); // Required only for C-spy
}
}
因为P1.2和P2.0是TA的复用口,所以比较方便。
其实PWM的原理无非就是出一个矩形波,一段时间高电平,一段时间低电平
所以你要是不用中断的情况下,用其他的口,通过延时等完全可以达到在你给定时间间隔的电平变化,除了P1和P2口外其他口都没有中断,好像是的,忘记了,说的这些都是针对MSP430X44X系列
温馨提示:答案为网友推荐,仅供参考