之前使用过的DSP28335是有专门的ePWM和捕捉功能的,不过定时器很少,其实是一样的道理,通用定时器也可以进行PWM方波的输出,使用过程可以按照下面来执行
本例程使用TIM3定时器,过程是先配置输出引脚,每个定时器有四个通道,每个通道都可以输出一路PWM方波,每一路都有一个比较寄存器,当定时器计数器到来得时候,引脚电平方向,至于反向是高到低还是低到高,这个由PWM模式和有效电平设置确定;
PWM模式1和模式2的区别
PWM1:向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为
无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否
则为有效电平(OC1REF=1)。有效电平取决设置,见下文;
PWM2:在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为
有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电
平。
GPIO设置
TIM3对应的输出通道引脚PA6/PA7,PB0和PB1,输出模式为复用推挽输出,频率为50Hz
static void TIM3_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;