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/8/1 23:10:12 閱讀更多
運維轉大模型:腳本工程師的Agent為什么上線就崩?

運維轉大模型:腳本工程師的Agent為什么上線就崩?

如果你正準備往大模型方向轉,《運維轉大模型,真正值錢的為什么不是會調 API?》這類問題別只看熱度。更重要的是判斷自己該補哪塊能力,以及怎么證明你真的會。摘要本文復盤一次 Agent 聯調失敗,從日志分析、告警歸因、自…

2026/8/1 22:47:31 閱讀更多
數學建模實戰:基于MILP與啟發式算法的疫苗生產排程優化

數學建模實戰:基于MILP與啟發式算法的疫苗生產排程優化

1. 項目概述:從一道賽題到一套完整的工業優化方案2021年“五一杯”數學建模競賽的A題“疫苗生產問題”,在當時那個特殊的時期,無疑是一個極具現實意義和挑戰性的題目。它不僅僅是一道數學題,更是對當時全球面臨的疫苗生產與分配瓶…

2026/8/2 8:45:19 閱讀更多
全棧開發的信息基礎

全棧開發的信息基礎

對于全棧開發的需求 我們要理解這么幾個東西 1.開發需求 對于業務需求和原型圖需求 2.開發環境和工具 3.開發經驗和開發節奏 4.部署服務器的相關信息 你列出的這四個維度非常精準,基本覆蓋了全棧項目從“紙面”到“線上”的全生命周期。作為全棧開發者(或…

2026/8/2 8:45:19 閱讀更多
Java Base64圖片字符串轉File對象:原理、實現與性能優化

Java Base64圖片字符串轉File對象:原理、實現與性能優化

1. 項目概述:從Base64字符串到File對象的實戰轉換 在前后端數據交互、圖片上傳優化以及本地緩存處理等場景中,我們經常會遇到一個經典需求:如何將前端傳來的一串看似天書的Base64圖片編碼,在Java后端服務中,還原成一個…

2026/8/2 8:45:19 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費下載鏈接】GetQzonehistory 獲取QQ空間發布的歷史說說 項目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南

3分鐘搞定!QQ空間歷史說說完整備份終極指南 【免費下載鏈接】GetQzonehistory 獲取QQ空間發布的歷史說說 項目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過,那些年發過的QQ空間說說,那些記錄青春的文字…

2026/8/2 0:04:01 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應用材料(Applied Materials)公司生產的一款用于半導體設備的I/O信號分配電路板。該型號(0100-02186)的核心特點如下:專用于Endura等半導體工藝腔室。集成信號路由與分配功能。連接控制…

2026/8/2 2:51:21 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動機是日本日清(Nissei)品牌的一款工業用三相異步電機,適用于自動化設備及通用機械驅動。該型號(FFMN-32L-10-T0 40AX)的核心特點如下:三相交流異步電動機。額定…

2026/8/2 2:52:49 閱讀更多