STM32最小系统板教程第三章第4讲|STM32 定时器实验
置顶公众号,不错过每一讲内容。
完整课程体系(公众号每日更新一讲):
本讲知识点:定时器简介、定时控制LED闪烁、TIM实现PWM输出
3.5.1 定时器简介
STM32的定时器(TIM)功能也是十分的强大,本开发板上共有四个TIM可以被配置使用,为TIM(1~4),其中TIM1为高级定时器,其余为通用定时器,每个TIM都包含4个独立通道。本讲只讲通用定时器的配置,见名知意,通用定时器的应用更为常见。通用定时器的功能有:输入捕获(可以测量输入信号的脉宽)、输出比较(产生输出波形)还可以产生PWM(脉冲宽度调制)波。
本讲主要讲解TIM精确定时和输出比较产生PWM这两个知识点。其他功能,大家在熟悉TIM的基本使用后,根据实际应用继续深入学习。
3.5.2 TIM实现LED精准闪烁
本讲,我们使用TIM3来实现相关实验,使用TIM的定时功能,不需要控制其他外设,因此不需要配置它所对应的GPIO引脚。同样复制一份上一讲的代码,添加tim.c和tim.h文件至工程,这里需要调用TIM的库函数,因此同样需要添加TIM的库至工程中,贴图如下:
图3-5-1 添加TIM库函数
图3-5-2 添加tim库函数及相关文件
接下来,在tim.c中编写定时器的初始化程序,贴图如下:
图3-5-3 TIM3配置
图3-5-4 TIM3中断服务函数
图3-5-5 TIM定时程序
代码编译无误,将程序下到开发板中,观察现象:每定时1s就进一次中断,用户灯就亮或灭一次,然后执行while循环中的打印信息,大家可以亲自动手实践一下!
3.5.3 TIM实现PWM输出
有了上一个实验作为基础,接下来,我们使用它的输出比较来实现PWM的功能。PWM可以用来驱动发光二极管来实现呼吸灯的效果,还可以用来控制电机用于调速。本实验是实现呼吸灯效果,首先看我们的原理图:
图3-5-6 MCU资源分布
图3-5-7 PC13引脚功能介绍
图3-5-8 TIM3通道引脚
由原理图我们可以知道,开发板上的TIM资源没有直接接相关外设,这样设计的目的是把TIM的每个通道引脚都留出来,待用户自行自由扩展。这里我们配置TIM3的通道1输出PWM,由数据手册可以知道该通道对应的MCU引脚为PA6,这里我们在上一节的定时代码基础上进行配置,贴图如下:
图3-5-9 PWM模式配置
图3-5-10 设置PWM占空比
程序编译一下,无误后下载到最小系统板,找一个发光二极管,正极接3V3,负极接PA6引脚,此时可以看到“ 呼吸灯 ”的效果:
图3-5-11 灯暗效果
图3-5-12 灯亮效果
至此,PWM输出控制实现“ 呼吸灯 ”的实验就成功了,当然,PWM还有其他应用,我们的DragonFly小四轴里的电机就是通过它来驱动的。
好了,本讲内容就到这里,大家亲自动手实践一下吧
视频课程(点击文末左下角“阅读原文”,可看高清视频):
TIM实现基本定时
https://v.qq.com/txp/iframe/player.html?vid=m0736qyvvno&width=500&height=375&auto=0
定时器输出PWM
最小系统板的购买链接(复制到淘宝打开即可):
https://item.taobao.com/item.htm?&id=573256065703
elink32仿真器购买链接(复制到淘宝打开即可):
https://item.taobao.com/item.htm?&id=558334383550
课程系列回顾:
STM32最小系统板教程第三章第1讲|从“点灯”入门STM32
STM32最小系统板教程第三章第2讲|STM32时钟系统及实现准确延时
STM32最小系统板教程第三章第3讲|STM32 UART串口通信
感谢您阅读“电子开发学习”的文章,如果您觉得图文能帮助您学习,欢迎关注我们。请点击右上角按钮,选择“查看公众号”,再点击关注即可。或者可以通过搜索公众号的方式关注: electricstudy 。您可以通过扫码下面的二维码关注我们。如果您想阅读往期文章,可点击“查看历史消息”。
历史好文推荐(点击文章标题可跳转):
小马哥四轴硬件第1讲、 Altium Designer安装与介绍
如何让Arduino IDE支持你手里的STM32 nucleo开发板