您好!
我使用 msp430f5659来生成 PWM 波形。 我已经使用下面给出的代码来使用计时器生成 PWM。
PWM_PINDIR;
PWM_PINMODESELECT; //选择引脚1.6作为 PWM 输出。
TA0CCR0 = 1000; //在定时器 A0捕捉/比较0寄存器中将周期设置为1000us。
TA0CTL = tassel_2+ MC_1 + TACLR; //tassel_2选择 SMCLK 作为时钟源、
//和 MC_1告诉它在 TA0CCR0向上计数模式中向上计数到值、清零 TAR。
TA0CCTL1 = OUTMOD_7;
TA0CCR1 = 500; //电源开启的周期(以微秒为单位)。 这是时间的一半、
//这相当于50%的占空比。
//TA0CTL = tassel_2 + MC_1; //tassel_2选择 SMCLK 作为时钟源、和
//MC_1会告诉它向上计数到 TA0CCR0中的值。
TA0CCTL0 = CCIE; // CCR0中断被启用
_bis_SR_register (LPM0_bits); //切换到低功耗模式0。
// Timer0 A0中断服务例程
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=TIMER0_A0_VECTOR
_interrupt void TIMER0_A0_ISR (void)
#Elif defined (_GNU_)
void __attribute__((中断(TIMER0_A0_Vector)) TIMER0_A0_ISR (void)
其他
错误编译器不受支持!
#endif
{
PWM_PINTOGGLE; //切换 P1.6
_BIC_SR_register (LPM0_BITS);
}
我获得的 PWM 频率为12kHz、但我的 SMCLK 以12MHz 的频率振荡。 如何获得更高的频率?
我尝试通过更改 TA0CTL 寄存器 ID 中的值来更改输出 PWM 频率、但它不会影响频率。
如何更改 PWM 的频率? 我必须修改哪个寄存器值才能获得所需的频率。