news 2026/7/15 4:56:18

[STM32C0] 【STM32C092RC 测评】4、板载外设——PWM

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[STM32C0] 【STM32C092RC 测评】4、板载外设——PWM

本次测试PWM的输出准备使用外部的示波器进行查看,PWM是我们比较常用的功能之一,不管是步进电机的驱动还是咱们常见的呼吸还是咱们常见的呼吸灯,实际上都是通过PWM来实现的。还有一些驱动器件的基准也需要通过其提供。实际上PWM是定时器的一个高级功能,我们都知道定时器是通过预分频以及计数来实现的,而我们的pwm就是在达到百分比的一个计数的时候实现的一个状态的翻转,也可以理解为在定时器的周期内插入了一个状态的一个反转。和其他的高级功能一样,都要依托于定时器的基本定时计数功能。
PWM这类的高级功能就不只是内部模块的使用了,还是需要配合着GPIO的引脚进行工作,PWM需要GPIO进行输出。
我们开启一个高级定时看一下PWM的实际使用方法:

打开定时器后我们可以看到通道的配置,这些通道最后就会连接到固定的一些引脚上,我们看一下CH1对应的默认引脚:

我们可以看到对应的PA0已经自动配置了:

需要注意的事PWM的输出不需要中断的参与,也就是说不用开启中断,但是必要的定时器参数还是需要配置的和定时器的配置方法是一致的,比如配置为1kHz的频率,如下:

高级定时器还可以进行死区配置,不过咱们这里就不用了,对开始的输出状态也没有太大要求,就按照默认的来:

初始化阶段需要先开启PWM输出:

复制

  1. <p>HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);</p><p>__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,0);</p>


接下来我们在上面的三个模式中加入不同的PWM占比:

复制

  1. <p>void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)</p><p>{</p><p> if(GPIO_Pin == GPIO_PIN_13)</p><p> {</p><p> LED_Mode++;</p><p> LED_Mode %= 3;</p><p> LED_TimeCnt = 0;</p><p> HAL_GPIO_TogglePin(User_LED1_GPIO_Port, User_LED1_Pin);</p><p> if(LED_Mode == 0){</p><p>__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,250);</p><p> }</p><p> else if(LED_Mode == 1){</p><p>__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,500);</p><p> }</p><p> else if(LED_Mode == 2){</p><p>__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,750);</p><p> }</p><p> }</p><p>}</p>


三个按键对应三个状态,以下是对应的不同占空比,也是正确的:


---------------------
作者:孤独的单行者
链接:https://bbs.21ic.com/icview-3452528-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 10:55:11

【高性能系统必备】:Java实时获取毫秒级时间戳的3种优化策略

第一章&#xff1a;Java获取毫秒级时间戳的核心意义 在现代软件系统中&#xff0c;时间是衡量事件顺序和性能的关键维度。Java获取毫秒级时间戳不仅为日志记录、缓存失效、并发控制等场景提供精确的时间基准&#xff0c;还在分布式系统中支撑着事务排序与数据一致性判断。 毫秒…

作者头像 李华
网站建设 2026/7/15 4:01:35

YOLOv9-s.pt权重使用教程:预下载模型直接调用方法

YOLOv9-s.pt权重使用教程&#xff1a;预下载模型直接调用方法 你是不是也遇到过这种情况&#xff1a;刚想用YOLOv9跑个目标检测&#xff0c;结果第一步下载权重就卡住了&#xff1f;网速慢、链接失效、路径不对……一堆问题接踵而来。别急&#xff0c;这篇教程就是为你准备的。…

作者头像 李华
网站建设 2026/7/4 17:33:50

语音识别开源生态发展:Speech Seaco Paraformer角色与价值分析

语音识别开源生态发展&#xff1a;Speech Seaco Paraformer角色与价值分析 1. 引言&#xff1a;中文语音识别的现实需求与技术演进 在智能办公、会议记录、教育转写、客服质检等场景中&#xff0c;高效准确的中文语音识别能力正变得不可或缺。传统语音识别系统往往依赖昂贵的…

作者头像 李华
网站建设 2026/7/14 7:55:17

别再if嵌套了!用Stream filter实现多条件过滤的终极方案(附源码)

第一章&#xff1a;从if嵌套到Stream过滤的思维跃迁 在传统编程实践中&#xff0c;条件判断常依赖多层 if-else 嵌套来筛选数据。这种方式虽直观&#xff0c;但随着逻辑复杂度上升&#xff0c;代码可读性和维护性急剧下降。现代Java开发中&#xff0c; Stream API 提供了一种声…

作者头像 李华
网站建设 2026/7/8 9:44:28

算法基础不牢?一文搞定Java冒泡排序实现与性能对比分析

第一章&#xff1a;算法基础不牢&#xff1f;一文搞定Java冒泡排序实现与性能对比分析 冒泡排序核心原理 冒泡排序是一种简单的比较类排序算法&#xff0c;其基本思想是重复遍历待排序数组&#xff0c;比较相邻元素并交换顺序错误的元素&#xff0c;直到整个数组有序。每一轮…

作者头像 李华
网站建设 2026/7/1 10:55:00

Z-Image-Turbo反馈闭环设计:用户评分驱动模型迭代

Z-Image-Turbo反馈闭环设计&#xff1a;用户评分驱动模型迭代 1. Z-Image-Turbo_UI界面概览 Z-Image-Turbo 的 UI 界面采用 Gradio 框架构建&#xff0c;整体布局简洁直观&#xff0c;专为图像生成任务优化。主界面分为几个核心区域&#xff1a;提示词输入区、参数调节面板、…

作者头像 李华