恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

PWM模式下呼吸灯实现

  • 首页
  • 资讯中心
  • /
  • PWM模式下呼吸灯实现

相关资讯

电力市场EM01 | N001电费单十几项收费看不懂?拆开才明白:电价是15个价格在同时结算 2026/10/20 11:26:28
ENOVIA(基于3DEXPERIENCE平台)许可:一次审计,暴露了监控的盲区 2026/10/20 11:21:28
【检测】搅拌摩擦焊焊缝无损检测方法对比 2026/10/20 11:21:28

最新资讯

基于Django+Vue的舆情分析系统:从数据采集到情感分类的完整实战
前端线上问题排查手册:事件循环、闭包与框架状态的5个高频坑
adb驱动工具集:一包搞定安卓设备调试与exynos4412开发板驱动安装
PPT工程化:参数驱动的幻灯片开发方法论
Linux自学笔记:从命令速查到故障排查的实战体系
让机器理解人:AGI共情模块的技术拆解与落地实践

今日推荐

高频变压器实战经验总结:磁芯选型、绕组工艺与故障排查全解析
U-Boot移植的关键:深入理解Kconfig配置系统与依赖关系
步进电机原理与调试全解析:从步距角到丢步排查

本周热门

基于GMM的语音识别系统原理与MATLAB实现详解
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

PWM模式下呼吸灯实现

发布时间:2026/10/20 11:26:28
PWM模式下呼吸灯实现 文章目录一、原理一STM32 定时器原理二脉宽调制PWM生成方法二、要求三、任务四、接线五、配置过程5.1 实验一定时器计数模式2s 周期 LED 亮灭1. CubeMX 配置2. 代码编写5.2 实验二定时器 PWM 模式呼吸灯1. CubeMX 配置2. 代码编写5.3 PWM 波形观察与分析Keil 逻辑分析仪六、效果展示及结果七、小结一、原理一STM32 定时器原理STM32F103 内部的通用定时器TIM2~TIM5本质上是一个可编程计数器通过对输入时钟进行分频并计数在设定的时间间隔产生更新事件从而实现定时功能。其核心组成包括计数器 CNT实时记录当前计数值。支持向上计数从 0 计到 ARR、向下计数、中心对齐计数三种模式。预分频器 PSC对定时器输入时钟进行分频分频系数为PSC1决定计数一次所需时间。自动重装载寄存器 ARR计数目标值。CNT 计数到 ARR 后清零并产生更新事件Update Event。捕获/比较寄存器 CCR用于与 CNT 比较是 PWM 模式和输入捕获的基础。时钟来源与分频关系TIM2~TIM5 挂载在 APB1 总线上。当 APB1 预分频系数不等于 1 时定时器时钟 APB1 总线时钟 × 2。本实验中系统时钟 72MHz、APB1 分频为 /2故定时器实际输入时钟为 72MHz。核心计算公式计数频率 定时器时钟 / (PSC 1) 溢出周期 计数频率 / (ARR 1) 定时器时钟 / [(PSC1) × (ARR1)]当 CNT 计数到 ARR 溢出时产生更新事件若使能中断则触发更新中断可在中断服务函数中执行定时任务如翻转 LED。二脉宽调制PWM生成方法PWMPulse Width Modulation脉宽调制是定时器输出比较功能下的一种工作模式并非独立硬件模块。其原理是定时器在输出比较通道上将 CNT 与 CCR 不断比较根据比较结果在引脚上输出高低电平从而由硬件自动生成一个频率固定、占空比可调的方波。PWM 模式 1向上计数输出规则CNT CCR → 引脚输出有效电平高电平 CNT ≥ CCR → 引脚输出无效电平低电平占空比计算公式占空比 CCR / ARRARR 决定 PWM 波的频率周期CCR 决定 PWM 波的占空比修改 CCR 即可实时改变占空比。引脚复用要使定时器 PWM 输出须将对应 GPIO 引脚配置为复用功能推挽输出Alternate Function Push-Pull此时引脚电平由定时器硬件自动控制无需 CPU 频繁翻转 IO。TIM3_CH1 对应引脚为 PA6。PWM 调光的物理含义LED 亮度取决于平均电流而平均电压 峰值电压 × 占空比。占空比越大LED 平均电流越大、越亮。因此通过软件缓慢改变 CCR占空比即可实现 LED 的渐亮渐灭呼吸灯效果。二、要求深入了解 STM32 定时器的工作原理计数、预分频、自动重装载、更新事件。掌握定时器普通计数模式的定时中断用法实现周期性翻转 IO。掌握定时器 PWM 模式的配置方法理解占空比与 ARR、CCR 的关系。学会用 HAL 库 CubeMX 完成定时器相关工程配置与代码编写。三、任务使用 STM32F103 的 TIM3 定时器以计数方式更新中断控制 LED 以 2s 频率周期性地亮—灭。使用 TIM3 的PWM 模式让 LED 以呼吸灯方式渐亮渐灭周期为 1~2 秒自行调整占空比变化达到满意效果。四、接线PA6 ──► 限流电阻 ──► LED正极() ──► LED负极(-) ──► GNDPA6 输出高电平时 LED 亮低电平时 LED 灭。五、配置过程5.1 实验一定时器计数模式2s 周期 LED 亮灭原理利用 TIM3 更新中断定时 1s在中断里翻转 PA6实现亮 1s、灭 1s完整周期 2s。1. CubeMX 配置说明配置项设置值说明RCCHSE Crystal/Ceramic外部 8MHz 晶振时钟树SYSCLK72MHzHSE×9APB1/2定时器时钟72MHzPA6GPIO_Output推挽初始电平 Low普通输出驱动 LEDTIM3Activated内部时钟启用定时器TIM3 参数PSC7199Counter ModeUpARR9999auto-reload preloadEnable定时 1sNVICTIM3 global interrupt 勾选使能更新中断定时计算计数频率 72MHz / (71991) 10kHz 溢出周期 10000 / (99991) 1s // 每 1s 溢出一次触发更新中断2. 代码编写main()中启动定时器中断/* USER CODE BEGIN 2 */HAL_TIM_Base_Start_IT(htim3);// 启动 TIM3 基础定时并使能更新中断/* USER CODE END 2 */更新中断回调/* USER CODE BEGIN 4 */voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){if(htim-InstanceTIM3){HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);// 每 1s 翻转一次 LED}}/* USER CODE END 4 */现象每次更新中断翻转一次 PA6LED 亮 1s、灭 1s循环往复完整周期 2s。5.2 实验二定时器 PWM 模式呼吸灯原理将 PA6 配置为 TIM3_CH1 复用输出启动 PWM 输出在软件中缓慢改变 CCR占空比实现渐亮渐灭。1. CubeMX 配置说明配置项设置值说明RCCHSE Crystal/Ceramic外部 8MHz 晶振时钟树SYSCLK72MHzHSE×9APB1/2定时器时钟72MHzPA6TIM3_CH1复用功能推挽AF Push-Pull速度 High定时器 PWM 复用输出TIM3Activated内部时钟启用定时器TIM3 ModeChannel1 PWM Generation CH1PWM 输出模式TIM3 参数PSC71Counter ModeUpARR999auto-reload preloadEnablePWM 频率 1kHzPWM CH1Pulse(CCR)0PWM mode 1初始占空比 0%PWM 频率计算计数频率 72MHz / (711) 1MHz PWM 频率 1MHz / (9991) 1kHz // 周期 1msLED 不闪烁 占空比 CCR / 999 // CCR 0~999 对应 0%~100%2. 代码编写main()中启动 PWM 输出/* USER CODE BEGIN 2 */HAL_TIM_PWM_Start(htim3,TIM_CHANNEL_1);// 启动 TIM3 CH1 的 PWM 输出/* USER CODE END 2 */主循环呼吸逻辑/* USER CODE BEGIN 3 */inti;while(1){// 渐亮CCR 从 0 逐步加到 999占空比 0%→100%每步 1ms约 1sfor(i0;i999;i){__HAL_TIM_SET_COMPARE(htim3,TIM_CHANNEL_1,i);HAL_Delay(1);}// 渐灭CCR 从 999 逐步减到 0占空比 100%→0%约 1sfor(i999;i0;i--){__HAL_TIM_SET_COMPARE(htim3,TIM_CHANNEL_1,i);HAL_Delay(1);}}/* USER CODE END 3 */现象LED 在约 2s 内由暗渐亮再由亮渐暗循环往复实现呼吸灯效果。调整HAL_Delay的延时或 CCR 步进即可改变呼吸周期1~2s。5.3 PWM 波形观察与分析Keil 逻辑分析仪为观察 PWM 输出波形使用 Keil 调试器的逻辑分析仪Logic Analyzer添加 PA6 引脚信号。由于 Logic Analyzer 直接输入寄存器位表达式即可提取引脚电平所添加的信号表达式为(PORTA 0x00000040) 6其中0x00000040为 PA6 对应的位掩码bit6 6将该位右移到最低位从而得到 PA6 引脚的电平0 或 1Display Type 设为 Bit。观察结果分析波形形态PA6 输出为稳定、规则的 PWM 方波高/低电平跳变清晰证明 TIM3_CH1 的 PWM 硬件输出正常引脚复用配置正确。周期/频率方波周期约为 1ms与设计 PWM 频率1kHz一致验证了 PSC71、ARR999 的配置计算正确。占空比变化方波的高电平时间占比即占空比占空比 CCR / ARR。观察可见随着呼吸过程方波高电平宽度逐渐变宽渐亮段CCR 增大、占空比增大再逐渐变窄渐灭段CCR 减小、占空比减小占空比在 0%~100% 之间循环直观体现了渐亮渐灭的实现原理。说明精确读取某一时刻的占空比数值可用逻辑分析仪的游标测量高电平宽度与周期占空比 高电平时间 ÷ 周期 × 100%。六、效果展示及结果实验一定时器计数烧录后 LED 以固定频率亮灭实测亮 1s、灭 1s完整周期 2s符合2s 频率周期性亮灭要求。实验二PWM 呼吸灯烧录后 LED 平滑渐亮、渐暗循环完整呼吸周期约 2s符合周期 1~2 秒要求。呼吸过程平滑无频闪说明 PWM 频率1kHz远高于人眼分辨调光效果良好。两个实验均验证了定时器计数模式与 PWM 模式的核心原理实验一通过 ARR/PSC 精确定时并利用更新中断实验二通过 CCR 控制占空比实现亮度调节。PWM 波形虚拟示波器通过逻辑分析仪添加 PA6 引脚信号(PORTA 0x00000040) 6观察到稳定规则的 PWM 方波周期约 1ms频率约 1kHz与设计值一致方波高电平宽度占空比随呼吸在 0%~100% 间渐变验证了 PWM 输出与呼吸调光功能正常。定时器的本质是可编程计数器通过 PSC 分频、ARR 定周期可精确产生任意时间间隔更新中断适合定时翻转 IO 等周期性任务。PWM 是定时器输出比较的一种模式占空比 CCR / ARR修改 CCR 即可调节占空比硬件自动输出方波CPU 负担很小。PWM 频率与呼吸周期是两个概念PWM 频率1kHz用于保证 LED 无频闪呼吸周期2s由软件修改 CCR 的速度决定二者应区分。引脚需复用配置PWM 输出要求 GPIO 配置为复用功能推挽引脚由定时器硬件接管实验一用普通 GPIO 中断翻转实验二用复用 GPIO 硬件 PWM两者配置不同。七、小结这次实验任务全部完成也观察到了波形深入了解了定时器模块的知识。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号