目的
用主从定时器的方法精确控制步进电机
概念
主从定时器也就是使用两个定时器,其中一个定时器(主)是另外一个定时器(从)的触发源。
使用材料
STM32F103ZET6
定时器补充知识
三个重要的量:
ARR——自动重新装载的值(计数器CNT的满值)
CNT——计数器值
PSC——预分频值
关于定时器TIM的八种模式之间的关系具体解读可以查看一下链接
PWM补充知识
一个重要的量:
CCRx——时刻与CNT比较的值
PWM与定时器的关系:PWM是定时器工作模式中的一种,单独的定时器工作模式有四种。
单独一个定时器有四种工作模式:
1.输入捕获(典型应用就是计算输入脉冲高电平持续时间)
2.输出比较(当CNT=CCRx,输出电平取反)
3.PWM(当CNT<CCRx为一种电平,当CNT>CCRx为另外一种电平)
4.单脉冲(只输出一个脉冲)
其他工作模式:两个定时器之间还可以构成主从模式、支持针对定位的增量(正交)编码器和霍尔传感器电路、触发输入作为外部时钟或者按周期的电流管理等。
输出比较和PWM的区别:
定时器主从模式
流程:
首先,配置好两个计时器(TIM),然后配置某个TIM为主定时器,接着配置这个TIM的TRGO。然后配置另外一个TIM为从定时器,使用ITRx为内部触发,最后选择从TIM的输入触发源。接下来看看官方文档(《STM32参考手册v10》P278)说明。
此图例子使用的是TIM1和TIM2构成主从模式。TIM1为 主,TIM2为从。
TIMx的内部连接:
TIM与TIM之间不是随便连接的,其内部通道是固定的,下表说明了这种关系。
实现代码
1、初始化对应IO及各种时钟
2、配置PWM模式,其中ARR根据自己情况设定,占空比CCRx可以固定
3、选择主定时器
///*///定时器x主模式设置///*/
TIM_SelectMasterSlaveMode(TIMx, TIM_MasterSlaveMode_Enable);
4、选择主定时器触发方式
TIM_SelectOutputTrigger(TIMx, TIM_TRGOSource_Update);
//TIM_TRGOSource:触发输出模式
//TIM_TRGOSource_Update:使用更新事件作为触发输出
5、选择从定时器内部通道
///*///定时器x从模式设置///*/
TIM_SelectInputTrigger(TIMx, TIM_TS_ITRx);
//TIM_TS_ITRx中的x要根据上述内部连接表格结合主从定时器来设置
6、设置从定时器触发源
TIM_SelectSlaveMode(TIMx,TIM_SlaveMode_External1);
7、配置完毕,完整代码可看引用链接,特别是嵌入式STM32学习笔记(5)——定时器主从模式,精确输出PWM脉冲数量
引用
STM32定时器系列 - STM32定时器的信号触发与主从模式