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

简介: 【蓝桥杯嵌入式】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;
}
相关文章
|
数据可视化 关系型数据库 MySQL
嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议数据可视化
通过本文的介绍,我们详细讲解了如何结合嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议,实现数据的采集、传输、存储和可视化。这种架构在物联网项目中非常常见,可以有效地处理和展示实时数据。希望本文能帮助您更好地理解和应用这些技术,构建高效、可靠的数据处理和可视化系统。
882 82
|
缓存 网络协议 算法
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
|
Web App开发 传感器 Linux
【嵌入式软件工程师面经】STM32单片机
【嵌入式软件工程师面经】STM32单片机
889 1
|
存储 数据安全/隐私保护 芯片
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
1911 2
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
2162 0

推荐镜像

更多
  • DNS