STM32—PWM输出

目录

[1 、 电路构成及原理图](#1 、 电路构成及原理图)

[2 、编写实现代码](#2 、编写实现代码)

main.c

pwm.c

3、代码讲解

4、烧录到开发板调试、验证代码

5、检验效果


此笔记基于朗峰 STM32F103 系列全集成开发板的记录。

1 、 电路构成及原理图

PWM---Pulse Width Modulation,脉冲宽度调制,是一种常见的通用的控制信号。该信号主要原理是通过周期性跳变的高低电平组成方波,来进行连续数据的输出。

这个例程我们利用 TIM4 的 CH4 通道 4 输出 PWM 信号来实现LED 灯像会呼吸一样逐渐亮起再逐渐熄灭。

由原理图可以看到只要 PB9 引脚的电平不断循环渐渐的拉低到接近 GND 电平,然后再渐渐的拉高电平接近 VCC 电平,这样的话,LED2 就可以逐渐的亮起再逐渐的熄灭不断循环,看起来就像呼吸一样。

如何让引脚 PB9 输出这样的电平呢?其实 PWM---脉冲宽度调制信号就是这样的电平。连续不断的往返改变 PWM 的宽度就 ok。

2 、编写实现代码

main.c

pwm.c

3、代码讲解

首先是初始化 TIM4 的向上计数方式、自动重装值、系统时钟分频系数以及 CH4 通道 4 的输出 PWM 信号、默认占空比、输出比较极性,最后启动 TIM4 的通道 4,初始化结束.

接下来就是 TIM4 通道 4 底层引脚的初始化了,依旧是按流程的开启对应时钟、设置引脚号、端口号、工作模式、上/下拉激活、速度选择,初始化完成。

最后看主 main 函数,开始依旧是按流程初始化 HAL 库、初始化系统时钟(72Mhz)、

初始化 LED、初始化 TIM4,之后进入死循环。

4、烧录到开发板调试、验证代码

用朗峰 F1 开发板配的 ST-LINK 下载器,连接到开发板的 SWD 插针上注意引脚对应关系,不要插错了。 然后编译一次(按 ),编译结果显示 0 错误 0 警告就 OK 。之后再按将代码下载到开发板。(可参考之前的笔记)

5、检验效果

连接好开发板电源并按下电源开关,LED2(绿色)呼吸起来la

使用的是朗峰STM32F103RCT6全集成开发板。

欢迎大家留言,共同探讨,共同学习,共同进步!

相关推荐
深圳市宝华视联17 小时前
Python 读取 IP 视频流简单 Demo
python·嵌入式硬件·opencv·网络协议·tcp/ip·实时音视频·嵌入式实时数据库
恒锐丰科技韩生17 小时前
RB6005A|晶准 单节锂电池内置 MOS 保护芯片 DFN2×3‑8
嵌入式硬件·硬件工程
youshi666817 小时前
stm32-PWR、低功耗模式
stm32·单片机·嵌入式硬件
ACP广源盛1392462567317 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 Serdes 长距离视频传输芯片 GSV5800 在私有化 AI 服务中的价值与应用场景
大数据·数据库·人工智能·嵌入式硬件·矩阵·开源·音视频
Funing718 小时前
STM32 电机动态 PI 控制:从编码器反馈、增量式 PI 到 Matlab 参数拟合与 PWM 输出
stm32·嵌入式硬件·matlab·pi控制算法
云泽80818 小时前
深入浅出 STM32(十八):时钟树、总线与寄存器的底层联动机制
stm32·单片机·嵌入式硬件
米饭不加菜19 小时前
C51 语言参考手册
经验分享·笔记·单片机·嵌入式硬件
深圳市宝华视联19 小时前
院感约束下,手术室音视频布线与设备摆放实施注意事项
嵌入式硬件·音视频·实时音视频·视频编解码·嵌入式实时数据库
科芯创展19 小时前
2.7VIN,5VOUT,360KHz,电荷泵升压芯片,XZ3120
单片机
dozenyaoyida19 小时前
LittleFS 嵌入式文件系统机制拆解与某 RISC-V MCU 实测配置
单片机·嵌入式·文件系统·risc-v·littlefs·flash存储