news 2026/6/10 12:55:56

[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/6/10 0:24:15

Emotion2Vec+ Large能否识别歌曲情感?音乐场景落地挑战分析

Emotion2Vec Large能否识别歌曲情感&#xff1f;音乐场景落地挑战分析 1. 引言&#xff1a;语音情感模型遇上音乐场景的现实考验 你有没有想过&#xff0c;一段欢快的旋律背后&#xff0c;歌手可能正唱着悲伤的歌词&#xff1f;或者一首节奏低沉的曲子&#xff0c;其实表达的…

作者头像 李华
网站建设 2026/6/10 17:03:39

【Java核心知识盲区突破】:从JVM层面理解接口和抽象类的真正差异

第一章&#xff1a;Java接口和抽象类的本质定义与设计初衷 在面向对象编程中&#xff0c;Java的接口&#xff08;Interface&#xff09;与抽象类&#xff08;Abstract Class&#xff09;是实现抽象化的核心机制。它们的设计初衷在于为系统提供清晰的契约规范与可扩展的结构框架…

作者头像 李华
网站建设 2026/6/10 17:03:21

Java时间戳陷阱揭秘:毫秒级获取为何在多线程下失效?

第一章&#xff1a;Java时间戳陷阱揭秘&#xff1a;毫秒级获取为何在多线程下失效&#xff1f; 在高并发场景中&#xff0c;Java开发者常使用 System.currentTimeMillis() 获取当前时间戳。然而&#xff0c;这一看似简单的方法在多线程环境下可能引发意想不到的问题——多个线…

作者头像 李华
网站建设 2026/6/10 15:40:48

Qwen-Image-2512-ComfyUI企业应用案例:智能设计平台落地实战

Qwen-Image-2512-ComfyUI企业应用案例&#xff1a;智能设计平台落地实战 获取更多AI镜像 想探索更多AI镜像和应用场景&#xff1f;访问 CSDN星图镜像广场&#xff0c;提供丰富的预置镜像&#xff0c;覆盖大模型推理、图像生成、视频生成、模型微调等多个领域&#xff0c;支持一…

作者头像 李华
网站建设 2026/6/10 17:06:07

Java泛型擦除全解析,资深架构师20年经验总结(必收藏)

第一章&#xff1a;Java泛型擦除是什么意思 Java泛型擦除&#xff08;Type Erasure&#xff09;是Java编译器在编译泛型代码时所采用的一种机制&#xff0c;其核心思想是在编译期间移除泛型类型参数的信息&#xff0c;将泛型类型还原为原始类型&#xff08;Raw Type&#xff09…

作者头像 李华