定时器A输出方波
1、定时器的PWM输出8种模式
输出模式0输出模式:输出信号OUTx由每个捕获/比较模块的控制寄存器CCTLx中的OUTx位定义,并在写入该寄存器后立即更新。最终位OUTx直通。
输出模式1置位模式:输出信号在TAR等于CCRx时置位,并保持置位到定时器复位或选择另一种输出模式为止。
输出模式2PWM翻转/复位模式:输出在TAR的值等于CCRx时翻转,当TAR的值等于CCR0时复位。
输出模式3PWM置位/复位模式:输出在TAR的值等于CCRx时置位,当TAR的值等于CCR0时复位。
输出模式4翻转模式:输出电平在TAR的值等于CCRx时翻转,输出周期是定时器周期的2倍。
输出模式5复位模式:输出在TAR的值等于CCRx时复位,并保持低电平直到选择另一种输出模式。
输出模式6PWM翻转/置位模式:输出电平在TAR的值等于CCRx时翻转,当TAR值等于CCR0时置位。
输出模式7PWM复位/置位模式:输出电平在TAR的值等于CCRx时复位,当TAR的值等于CCR0时置位。
下图是增计数模式下的输出波形:
2、程序:(TA定时器输出1K的方波)
void TAPWM(void)
{
//引脚设置(暂时使用P1.2输出一路PWM)
P1SEL |= BIT2;//TA1从P1.2输出
P1DIR |= BIT2;//TA1从P1.2输出
//P2SEL |= BIT0;//TA2从P1.2输出
//P2DIR |= BIT0;//TA2从P1.2输出
TACTL |= MC_1 +TASSEL_1;//时钟源选择ACLK,增计数模式TA设置
TACCTL1 = OUTMOD_7; //模式7高电平PWM输出 PWM设置
//TACCTL2 = OUTMOD_7; //模式7高电平PWM输出
TACCR0= 33-1;//PWM总周期=32个ACLK周期 约等于1000Hz 设置PWM的周期
TACCR1 = 16; //TA1占空比= 16/32=50% 设置占空比
//TACCR2 = 16; //TA2占空比= 16/32=50%
}
软件改变TACCR0即可改变PWM的周期,改变TACCR1或者TACCR2即可改变占空比