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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 【蓝桥杯嵌入式】PWM的设置,原理图解析与代码实现(第十一届省赛为例)——STM32

目录


题目

设置STM32CubeMX

手搓代码

开启PWM函数

PWM占空比可调函数


正文


题目


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

要求我们用PA6和PA7输出两种不同频率的占空比可调节的脉冲信号,频率的设置是由定时器中的预分频系数和重装载值来决定的


设置STM32CubeMX


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

543.png

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

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

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


手搓代码


开启PWM函数


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

  HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);   //开启PWM
  HAL_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_duty
  key[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_duty
  key[2].key_flag = 0;
}
相关文章
|
7月前
|
C语言
蓝桥杯嵌入式零基础如何准备
蓝桥杯嵌入式零基础如何准备
|
1月前
|
JSON JavaScript 前端开发
蓝桥杯web组赛题解析和杯赛技巧
本文作者是一位自学前端两年半的大一学生,在第十五届蓝桥杯Web组比赛中获得省一和国三。文章详细解析了比赛题纲,涵盖HTML、CSS、JavaScript、Echarts和Vue等技术要点,并分享了备赛技巧和比赛经验。作者强调了多写代码和解题思路的重要性,同时提供了省赛和国赛的具体流程及注意事项。希望对参赛者有所帮助。
85 3
|
7月前
蓝桥杯真题代码记录(保险箱
蓝桥杯真题代码记录(保险箱
59 1
蓝桥杯真题代码记录(保险箱
|
5月前
|
传感器 芯片
嵌入式通信协议全解析:SPI、I²C、UART详解(附带面试题)
通信是指人与人或人与自然之间通过某种行为或媒介进行的信息交流与传递。从广义上来说,通信是指需要信息的双方或多方在不违背各自意愿的情况下采用任意方法、任意媒质,将信息从某方准确安全地传送到另方。在出现电波传递通信后,通信被单一解释为信息的传递,是指由一地向另一地进行信息的传输与交换,其目的是传输消息。通信方式包括利用“电”来传递消息的电信,这种通信具有迅速、准确、可靠等特点,且几乎不受时间、地点、空间、距离的限制,因而得到了飞速发展和广泛应用。
1228 0
|
5月前
|
传感器 编解码 API
【STM32开发入门】温湿度监测系统实战:SPI LCD显示、HAL库应用、GPIO配置、UART中断接收、ADC采集与串口通信全解析
SPI(Serial Peripheral Interface)是一种同步串行通信接口,常用于微控制器与外围设备间的数据传输。SPI LCD是指使用SPI接口与微控制器通信的液晶显示屏。这类LCD通常具有较少的引脚(通常4个:MISO、MOSI、SCK和SS),因此在引脚资源有限的系统中非常有用。通过SPI协议,微控制器可以向LCD发送命令和数据,控制显示内容和模式。
218 0
|
7月前
|
网络安全 数据安全/隐私保护 计算机视觉
2024蓝桥杯网络安全-图片隐写-缺失的数据(0基础也能学会-含代码解释)
2024蓝桥杯网络安全-图片隐写-缺失的数据(0基础也能学会-含代码解释)
|
7月前
|
缓存 网络协议 算法
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
|
7月前
蓝桥杯真题代码记录(直线
蓝桥杯真题代码记录(直线
52 0

推荐镜像

更多