使用工具:
1 正点原子RCT6mini板
2 cubemx
3 keil5
4 STlink
文章是在正点原子开发视频以及众多大佬单片机开发教程上个人实验上的记录吧,希望可以帮到有需要,或者是那些遇到相同bug的uu们,大家一起努力吧!
正文开始
首先讲一下PWM的工作原理吧。
其实PWM就可以看做是一定时间周期内高低电平占有时间比,从而拟合出一定电压。
举个例子,假设5s内一直输出5V,将它看做一个单位时间的话,那么在这个单位时间上电压恒为5V,那么假设在这5V内,有2.5s时间输出5V,另外2.5s时间输出0v,那么高低电平的占空比各为50%,那么这个单位时间我们可以看做2.5V的输出。
先上cubemx的配置图吧
首先按照图中给的顺序配置RCC以及SYS


要使用PWM功能,可以使用32开发板定时器内的PWM通道哦,这边以定时器3为例,选择时钟源为内部时钟,将第二通道设置为PWM通道,设置分屏系数以及周期从而得到想要的频率。具体的运算公式可以看csdn或者其他教程视频。

在开启通道之后我们会发现引脚图上已经自动的帮我们设置好了引脚

那么接下来就是在keil里的配置了
首先我们需要打开PWM通道,使用HAL_TIM_PWM_START函数
上图我们将周期设置为了499,那么通过COMPARE函数可以获得目前的计数值CNT与预设值,图上也就是250进行比较,如果大于250,那么将输出高电平(默认)。PWM的有效电平以及触发方式是总共有四种的,我这只是说了最基础的一种,可以自己去查一下,很好理解的

最后介绍一下while里面我注释掉的语句,这是一个呼吸灯模块,呼吸灯也就是改变led的亮度从而带来视觉上的呼吸感,通过一个dutycycle设定不同的出发有效电平的值,改变每次PWM输出的起始时间,那么也就是改变了这一周期的有效电平,从而改变了电平,改变了LED灯的亮度

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/73053.html