![]() |
發(fā)布時間: 2025-3-7 14:30
正文摘要:用單片機做了個時鐘,OLED顯示時間日期,周邊一圈60個ws2812b燈珠同步顯示時分秒正常,但是想讓屏幕顯示時間,ws2812顯示流水燈就出問題了,我目前用的定時器定時一秒讀取時間顯示,但是這樣的話流水燈就被打斷了, ... |
zxcscm 發(fā)表于 2025-3-9 22:25 給你點贊,借樓給樓主說一聲如果有興趣的話可以看看我發(fā)的帖子,試試我的方案 |
流程問題。 2812在寫入數(shù)據(jù)不容打斷! 你的2812也是顯示時鐘的嗎? 那你可以定時讀RTC,對比秒數(shù)據(jù),秒不同才更新2812和OLED, 更新2812時,把所有中斷關閉就可以了。 2812和OLED都有鎖存的,沒必要時時更新數(shù)據(jù),只有在需要時再更新。 如果你的2812不是顯示秒,而是不停在在轉(zhuǎn),理論上可能要開硬件驅(qū)動,比如SPI+DMA, 這樣你2812發(fā)送數(shù)據(jù)交給DMA去處理,MCU只要給DMA喂新數(shù)據(jù)就可以了。 ===以上僅供參考,沒有相關的實驗支持=== |
你的程序里讀取時間并在OLED上顯示和ws2812顯示流水燈時肯定使用了大量的延時,這些延時是打斷其他程序的根本原因。要想實現(xiàn)不同功能的流暢切換,要更換程序框架。比如使用狀態(tài)機的機理,將各個功能進行時間切片,不用死等的延時,這樣才可以。 |
用FreeRTOS吧,多線程跑這兩個任務 |
頂一下 |
Powered by 單片機教程網(wǎng)