Zigbee、STM32系列开发板-非定时器方式实现PWM呼吸灯-实时状态更改方法-呼吸灯简易实现方法
一、概述本文讲述关于PWM呼吸灯不使用定时器的呼吸方式并且可以实现随时暂停至某一单个亮度的PWM调光程序具有非常高的实时性对外界改变操作实时做出反馈。二、实现思路本文的实现思路是以非定时器PWM实现的需要先学习文章STM32实现模拟呼吸灯效果-非PWM-STM32CubeMx项目生成-手动控制呼吸灯调光下面我们需要使用此思路重新完成呼吸灯的配置其只要思路即在主函数中一直进行PWM的呼吸效果将完整的PWM过程拆分为若干个过程使得程序具有实时性且可以随时停留在某个占空比上当且仅当主程序调用调光函数时占空比才会相应增加或减少。三、代码实现首先定义两个变量分别代表占空比与占空比上升标志位。int zkb0; int up1;主要代码实现如下void breath() { GpioWrite(Led1,0); if(up1) { zkb; if(zkb1500) up0; } else { zkb--; if(zkb0) up1; } for(int i0;i1500;i) { if(izkb) { GpioWrite(Led1,1); } } }通过阅读本段代码可以得知我们只需要在主函数中不断调用即可实现呼吸灯效果且当我们不在调用时LED灯将熄灭。下面我们继续增加一个标志位仅当标志位为真时才会提高会降低占空比代码实现如下int zkb0; int up1; int breathflag0; void breath() { GpioWrite(Led1,0); if(breathflag1) { if(up1) { zkb; if(zkb1500) up0; } else { zkb--; if(zkb0) up1; } } for(int i0;i1500;i) { if(izkb) { GpioWrite(Led1,1); } } }通过这个函数我们可以看出我们在主函数中循环调用该函数当呼吸标志位为真时则占空比会改变否则将持续当前亮度。主函数调用方法int main( void ) { Init(); while( 1 ) { breath(); if(isKey2Pressed()) { breathflag1; resetKey2(); } if(isKey3Pressed()) { breathflag0; resetKey3(); } } }函数解析如下当按下key2键时程序开始进入呼吸灯当按下key3键时呼吸灯停止并一直展示当前亮度。四、总结本文阐述了一种除定时器PWM调光外的一种虚拟的PWM过程且在实时性、效率方便提高以最简单的方式完成呼吸灯的暂停与开始。

相关新闻

LLM集成与AI智能体开发实战:从原理到企业级应用

LLM集成与AI智能体开发实战:从原理到企业级应用

2026年伦敦DConf大会:LLM集成与AI智能体开发实战指南最近在准备参加2026年伦敦DConf大会的技术分享时,发现LLM集成与AI智能体开发已经成为开发者社区的热门话题。无论是企业级应用还是个人项目,如何高效地将大语言模型集成到现有系统中&#…

2026/7/30 17:02:53 阅读更多
运维转大模型:脚本工程师的Agent为什么上线就崩?

运维转大模型:脚本工程师的Agent为什么上线就崩?

如果你正准备往大模型方向转,《运维转大模型,真正值钱的为什么不是会调 API?》这类问题别只看热度。更重要的是判断自己该补哪块能力,以及怎么证明你真的会。摘要本文复盘一次 Agent 联调失败,从日志分析、告警归因、自…

2026/7/30 16:52:52 阅读更多
终极Evernote笔记备份指南:3步掌握数据自主权

终极Evernote笔记备份指南:3步掌握数据自主权

终极Evernote笔记备份指南:3步掌握数据自主权 【免费下载链接】evernote-backup Backup & export all Evernote notes and notebooks 项目地址: https://gitcode.com/gh_mirrors/ev/evernote-backup 你是否曾担心过云端笔记服务突然关闭?是否…

2026/7/30 18:03:24 阅读更多
Agate虚拟主机配置:多域名站点部署与证书管理技巧

Agate虚拟主机配置:多域名站点部署与证书管理技巧

Agate虚拟主机配置:多域名站点部署与证书管理技巧 【免费下载链接】agate Very simple server for the Gemini hypertext protocol 项目地址: https://gitcode.com/gh_mirrors/aga/agate Agate作为一款轻量级Gemini协议服务器,支持通过虚拟主机配…

2026/7/30 18:03:24 阅读更多
123.BGP的五种报文的抓包

123.BGP的五种报文的抓包

BGP报文(五种) 报文 说明 类型 open 负责和对等体建立邻居关系。 1 Update 该消息被用来在BGP对等体之间传递增量路由信息。 2 Keep-Alive 该消息在对等体之间周期性地发送,用以维护连接。 3 Notification 当BGP Speaker检测到错误的时候,就该发送该消息给对等体。 4 Route-r…

2026/7/30 18:03:24 阅读更多
[GESP202606 四级] 扫雷

[GESP202606 四级] 扫雷

B4557 [GESP202606 四级] 扫雷 https://www.luogu.com.cn/problem/B4557 中国计算机学会(CCF)2026年6月C四级讲解——扫雷 https://www.bilibili.com/video/BV1MCMg6AEXR/ B4557 [GESP202606 四级] 扫雷 https://www.bilibili.com/video/BV1ZKTj6ZEVh/ 2…

2026/7/30 0:01:06 阅读更多