完整教程:带你了解STM32:TIM定时器(第四部分)
目录
0.STM32中机制最强大、结构最复杂的一个外设——定时器(四部分学习)
第一部分:
第二部分:
第三部分:
第四部分:
1.编码器接口简介
2.正交编码器
3.编码器接口基本结构
4.工作模式
5.实例(均不反相)
6.实例(TI1反相)
7.编码器接口测速代码
第一步:按图接线到面包板上
第二步:复制定时器定时中断的代码
第三步:编码器代码模块化
第四步:编码器初始化
编码器接口相关库函数
第五步:写编码器的增量值函数并头文件声明
第六步:主函数调用
编码器接口测速完整代码
8.编码器接口相关库函数
0.STM32中机制最强大、结构最复杂的一个外设——定时器(四部分学习)
第一部分:
首要是定时器基本定时的效果,定一个时间,随后让定时器每隔这个时间产生一个中断,来实现每隔一个固定时间执行一段时间的目的,比如:时钟、秒表、一些程序算法时
第二部分:
主要是定时器输出比较的功能,输出比较这个模块最常见的用途是产生PWM波形,用于驱动舵机、直流电机等设备
第三部分:
主导是定时器输入捕获的特性,使用输入捕获这个模块来搭建测量方波频率的例子
第四部分:
主要是定时器的编码器接口,使用该编码器接口,能够更加方便地读取正交编码器的输出波形,在编码电机测速中,应用非常广泛
1.编码器接口简介
Encoder Interface 编码器接口
编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度
每个高级定时器和通用定时器都拥有1个编码器接口
两个输入引脚借用了输入捕获的通道1和通道2
编码器接口模式基本上相当于使用了一个带有方向选择的外部时钟
2.正交编码器
3.编码器接口基本结构
输入捕获前两个通道,通过GPIO口接入编码器的A、B相,然后通过滤波器和边沿检测极性选择,产生TI1FP1和TI2FP2,通向编码器接口,编码器接口通过预分频器控制CNT计数器的时钟,同时编码器接口还根据编码器的旋转方向,控制CNT的计数方向(编码器正转时,CNT自增,编码器反转时,CNT自减),ARR补码的特性,很容易得到负数
4.工作模式
正传向上计数,反转向下计数
5.实例(均不反相)
原来的那个值,并不受毛刺噪声的影响就是抗噪声原理:出现一个引脚不变,另外一个引脚连续跳变多次的毛刺信号,计数器就会加、减、加、减来回摆动,最终计数值,还
6.实例(TI1反相)
7.编码器接口测速代码
第一步:按图接线到面包板上
第二步:复制定时器定时中断的代码
第三步:编码器代码模块化
第四步:编码器初始化
初始化步骤:1.RCC开启时钟,开启GPIO和定时器的时钟;2.安装GPIO,这里需要把PA6和PA7配置为输入模式;3.配置时基单元,预分频器选择不分频,ARR自动重装给65535;4.配置输入捕获单元;5.部署编码器接口模式;6.启动定时器
电路初始化后,CNT就会随着编码器旋转自增自减,如果想要测出编码的位置,直接读出CNT的值,倘若想测量编码器的速度和方向,就每隔一段固定的闸门时间,取出CNT然后把CNT清零
编码器接口相关库函数
定时器编码器接口配置,参数(选择定时器,选择编码器模式,通道1的电平极性选择,通道2的电平极性选择)
第五步:写编码器的增量值函数并头文件声明
第六步:主函数调用
编码器接口测速完整代码
8.编码器接口相关库函数
定时器编码器接口设置,参数(选择定时器,选择编码器模式,通道1的电平极性选择,通道2的电平极性选择)