当前位置: 首页 > news >正文

【蓝桥杯嵌入式】PWM的设置,原理图解析与代码实现(第十一届省赛为例)——STM32

        

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏

🪔本系列专栏 -  蓝桥杯嵌入式_勾栏听曲_0的博客

🍻欢迎大家  🏹  点赞👍  评论📨  收藏⭐️

📌个人主页 - 勾栏听曲_0的博客📝

🔑希望本文能对你有所帮助,如有不足请指正,共同进步吧🏆

🎇是非成败转头空。青山依旧在,几度夕阳红。一壶浊酒喜相逢。古今多少事,都付笑谈中。📈


目录

题目

设置STM32CubeMX

手搓代码

开启PWM函数

PWM占空比可调函数


题目

第十一届省赛关于PWM的题目要求如下:

         要求我们用PA6和PA7输出两种不同频率的占空比可调节的脉冲信号,频率的设置是由定时器中的预分频系数和重装载值来决定的,有需要理解的小伙伴可以取这篇文章中了解【蓝桥杯嵌入式】STM32定时器的配置,解析预分频系数和重装载值与时钟频率的关系。

设置STM32CubeMX

        首先我们要给PA6和PA7引脚选一个定时器,下图中我们可以看到PA6由四个定时器可选,分别是TIM16_CH1,TIM1_BKIN,TIM3_CH1,TIM8_BKIN,但是我们只能选择后缀为CH1的定时器,至于为什么可以点此了解。因为我们在前几篇文章中给按键设置的定时器为TIM3_CH1,所以在这里我们给PA6选择TIM16_CH1,同样的,我们给PA7选择TIM17_CH1。

 引脚设置完成后,我们转到左边来,如下图,先给定时器使能,选择通道Output Compare CH1,

        TIM16是PA6的定时器,要求是100Hz,时钟原本的频率是80MHz,计算出分频系数和重装载值后填入即可(如何计算上面有相关链接)。

 如何往下翻,找到Pulse,设置占空比,为20.这样PA6的脉冲信号解设置好啦,PA7同理设置即可。

 手搓代码

开启PWM函数

以下是打开PWM的函数,第一个参数是定时器,第二个参数是通道。

	HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);		//开启PWMHAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1); 

PWM占空比可调函数

这里使用按键来对PWM的占空比进行改变,每按一次占空比加10,等于100时跳转回10。

PWM的占空比改变的实现函数如下,第一个参数是定时器,第二个参数是通道,第三个参数是占空比的比例,如10就是10%的高电平。

_HAL_TIM_SetCompare(&htim16,TIM_CHANNEL_1,pa6_duty);

 以下就是完整的改变PWM的完整函数

if(key[1].key_flag == 1)
{pa6_duty+=10;if(pa6_duty > 90){pa6_duty=10;}_HAL_TIM_SetCompare(&htim16,TIM_CHANNEL_1,pa6_duty);		//设置占空比pa6_dutykey[1].key_flag = 0;
}
if(key[2].key_flag == 1)
{pa7_duty+=10;if(pa7_duty > 90){pa7_duty=10;}__HAL_TIM_SetCompare(&htim17,TIM_CHANNEL_1,pa7_duty);		//设置占空比pa6_dutykey[2].key_flag = 0;
}
http://www.lryc.cn/news/35492.html

相关文章:

  • Learning C++ No.13【STL No.3】
  • 推荐收藏!10大程序员必备生产力工具
  • 【项目总结】基于SSM+SpringBoot+Redis的个人博客系统项目总结
  • 从入门到精通MongoDB数据库系列之一:MongoDB简介
  • 大数据系列——什么是hdfs?hdfs用来干什么的?
  • 云端地球2月更新了这些功能,你都用过了吗?
  • 基于gin-vue-admin[gin+gorm]手动实现crud(全)
  • 彻底关闭Windows10更新!!
  • 跨时钟域CDC
  • JavaEE简单示例——Spring的控制反转
  • DBT 收购 Transform,指标平台已成现代数据栈关键拼图
  • @Value注解取不到值的几种错误
  • 听客户说|东台农商银行:建立健全数据安全管理制度的探索与实践
  • Benchbot环境安装记录
  • Barrett模乘与蒙哥马利模乘算法
  • slice方法
  • DevOps工具集合
  • 手把手教你安装Linux!!!
  • 图像分割(Unet算法学习笔记)
  • Fortinet 发布《2022下半年度全球威胁态势研究报告》,七大发现值得关注
  • ThinkPHP 6.1 模板篇之循环和选择标签
  • Jetpack太香了,让开发效率提升了不少
  • 【软考中级信安】第四章--网络安全体系与网络安全模型
  • 四、GC分析内存调优
  • 如何快速开发一套分布式IM系统
  • W806|CKLINK LITE|调试|elf文件模板|CSDK|Debug|学习(4):CKLINK调试W806
  • 【100个 Unity实用技能】 ☀️ | 脚本无需挂载到游戏对象上也可执行的方法
  • 「IT女神勋章」挑战赛#
  • 易优cms user 登录注册标签
  • 源码安装Redis 7.0.9并且systemctl管理