思路:
利用定时器B的比较功能输出PWM波形;
一、定时器B
定时器B的特点:
1)异步16位定时/计数器;
2)4种工作模式;
3)4个可选长度
4)3或7个可配置的捕获/比较寄存器;
定时器的4种工作方式分别为,停止计数模式,增计数模式,连续计数模式和增减计数模式;
要输出PWM波形,需要配置定时器B的捕获/比较部件工作在比较模式,寄存器TBCCTLx的CAP位配置为0即可;
TBCCTLx寄存器定义:
定时器的每一个捕获/比较部件都拥有一组输出单元,这个输出单元是用来产生输出信号的,例如PWM波等,输出信号的引脚通常在数据手册中都会表明
每个输出单元都有8种模式:
1)电平输出,由TBCCTLx寄存器的OUTx位控制;
2)置位模式,当计数器计至TBCLx时,输出引脚置位;
3)取反/清零模式,计数器计至TBCLx时,输出引脚取反,计至TBCL0时输出引脚清零;
4)置位/清零模式,计数器计至TBCLx时,输出引脚置1,计至TBCL0时输出引脚清零;
5)取反模式,计数器计至TBCLx时,输出引脚取反;
6)清零模式,计数器计至TBCLx时,输出引脚清零;
7)取反/置位模式,计数器计至TBCLx时,输出引脚取反,计至TBCL0时输出引脚置1;
8)清零/置位模式,计数器计至TBCLx时,输出引脚清零,计至TBCL0时输出引脚置1;
例:通过TB1(P4.1)输出50%的PWM波,频率为50Hz
void Pwm_Init(void)
{
//250KHz
TBCTL |= TBSSEL_2 + ID_2 + MC_1 + TBCLR;//SMCLK,1/4,UPMODE,CLEAR
TBCCTL1 |= OUTMOD_3;//SET/RESET
P4SEL |= BIT1;
P4DIR |= BIT1;
}
void Pwm_Start(void)
{
TBCCR0 = 5000 - 1;//20ms
TBCCR1 = 2500;
}