❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。
☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋。
🌙专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。⭐️ 专栏主要内容: 主要学习STM32单片机的功能、各个模块、单片机的外设、驱动等,最终玩好单片机和单片机的外设,全程手敲代码,实现我们所要实现的功能。
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
💑专栏主页:http://t.csdn.cn/HCD8v
本学习过程参考:https://space.bilibili.com/383400717
STM3单片机安装软件、各种资料以及源码的路径:
链接:https://pan.baidu.com/s/1snD0uuTfMhchFqOMWvAiHA?pwd=asdf#list/path=%2F
提取码:asdf
链接里压缩包的解压密码:32
本大节主要学习TIM定时器的相关知识,包含八小节:
第一小节主要学习定时器基本定时的功能,第二小节是对第一小节的内容写两个程序进行练习,分别是定时器定时中断和定时器外部时钟;
第三小节主要学习定时器输出比较的功能,第四小节是对第三小节的内容写三个程序进行练习,分别是PWM驱动LED呼吸灯、PWM驱动舵机以及PWM驱动直流电机;
第五小节主要学习定时器输入捕获的功能,第六小节是对第五小节的内容写两个程序进行练习,分别是输入捕获模式测频率和PWMI模式测频率占空比;
第七小节主要学习定时器的编码器接口功能,第八小节是对第七小节的内容写一个程序进行练习,即编码器接口测速;
最终附上所有的源代码;
本小节主要是学习定时器的编码器接口,使用这个编码器接口,能够更加方便地读取正交编码器的输出波形,在编码电机测速中,应用也是非常广泛的;
文章目录
- 一、编码器基础知识
- 1.1 编码器接口简介
- 1.2 正交编码器
- 1.3 编码器基本结构
- 1.4 工作模式
- 二、编码器实例
- 2.1 实例(均不反相)
- 2.2 实例(TI1反相)
一、编码器基础知识
1.1 编码器接口简介
- 这个编码器接口,其实就相当于是一个带有方向控制的外部时钟,它同时控制着CNT的计数时钟和计数方向;这样的话,CNT的值就表示了编码器的位置;如果我们每隔一段时间取一次CNT的值,再把CNT清零,则每次取出来的值就表示了编码器的速度;编码器测速其实就是测频法测正交脉冲的频率;
1.2 正交编码器
- 正交编码器一般可以测量位置,或者带有方向的速度值;它一般有两个信号输出引脚,一个是A相,一个是B相;
- 一般情况下,正转时A相提前B相90度,反转时A相滞后B相90度;通过这个可以用来测方向;
- 测方向原理:首先把A相和B相的所有边沿作为计数器的计数时钟,出现边沿信号时,就计数自增或自减;然后到底是增还是减,这个计数的方向由另一相的状态来确定,当出现某个边沿时,判断另一相的高低电平,如果对应另一相出现的规律是按照上面的表格,那就是正转,如果对应下面的表格,那就是反转;
1.3 编码器基本结构
- 输入捕获的前两个通道,通过GPIO口接入编码器的A、B相,然后通过滤波器和边沿检测极性选择,产生TI1FP1和TI2FP2,通向编码器接口,编码器接口通过预分频器控制CNT计数器的时钟;同时,编码器接口还根据编码器的旋转方向,控制CNT的计数方向;编码器正转时,CNT自增,编码器反转时,CNT自减;
- 一般我们会设置ARR为65535,最大量程,这样利用补码的特性,很容易得到负数;