TIM1,TIM8可以产生死区互补PWM波,
学习后发现stm32的定时器功能确实很强大,小总结一下方便以后使用的时候做参考。Stm32定时器一共分为三种:tim1和tim8是高级定时器,6和7是基本定时器,2—5是通用定时器。从名字就可以看得出来主要功能上的差异。今天我主要是用定时器做pwm输出,所以总结也主要是针对pwm方面的。
先大致说下通用和高级定时器的区别。通用的可以输出四路pwm信号互不影响。高级定时器可以输出三对互补pwm信号外加ch4通道,也就是一共七路。
所以这样算下来stm32一共可以生成4*5+7*2=30路pwm信号。接下来还有功能上的区别:通用定时器的pwm信号比较简单,就是普通的调节占空比调节频率(别的不常用到的没去深究);高级定时器的还带有互补输出功能,同时互补信号可以插入死区,也可以使能刹车功能,从这些看来高级定时器的pwm天生就是用来控制电机的。
1、TIM生成PWM初始化设置
首先确定引脚,TIM1可以 无映射、部分映射、完全映射,对应引脚不同,这里使用部分重映射,使用TIM1的通道GH1、CH2产生PWM波,CH1N、CH2N产生互补的PWM波,即PA8和PA7为一对,PA9和PB0为一对。

//1、初始化结构体
//使用到GPIO、TIM基本配置、比较输出、死区配置;
GPIO_InitTypeDef GPIO_InitStructure2;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
//2、使能时钟,GPIO,TIM1,复用功能,
//时钟使能,管脚Rmap