標(biāo)題: stc8h1k08單片機(jī),ws2812b和0.96oled做的時(shí)鐘有問 [打印本頁]

作者: csllf2008    時(shí)間: 2025-3-7 14:30
標(biāo)題: stc8h1k08單片機(jī),ws2812b和0.96oled做的時(shí)鐘有問
用單片機(jī)做了個(gè)時(shí)鐘,OLED顯示時(shí)間日期,周邊一圈60個(gè)ws2812b燈珠同步顯示時(shí)分秒正常,但是想讓屏幕顯示時(shí)間,ws2812顯示流水燈就出問題了,我目前用的定時(shí)器定時(shí)一秒讀取時(shí)間顯示,但是這樣的話流水燈就被打斷了,不用定時(shí)器的話流水燈顯示的時(shí)候時(shí)鐘不能走秒,想問下有沒有更好的解決辦法

IMG_20250306_225850.jpg (513.16 KB, 下載次數(shù): 0)

IMG_20250306_225850.jpg

作者: 人工置頂員    時(shí)間: 2025-3-9 13:49
頂一下
作者: Xiao4    時(shí)間: 2025-3-9 21:02
用FreeRTOS吧,多線程跑這兩個(gè)任務(wù)
作者: zxcscm    時(shí)間: 2025-3-9 22:25
你的程序里讀取時(shí)間并在OLED上顯示和ws2812顯示流水燈時(shí)肯定使用了大量的延時(shí),這些延時(shí)是打斷其他程序的根本原因。要想實(shí)現(xiàn)不同功能的流暢切換,要更換程序框架。比如使用狀態(tài)機(jī)的機(jī)理,將各個(gè)功能進(jìn)行時(shí)間切片,不用死等的延時(shí),這樣才可以。
作者: zhuls    時(shí)間: 2025-3-9 23:05
流程問題。
2812在寫入數(shù)據(jù)不容打斷!
你的2812也是顯示時(shí)鐘的嗎?
那你可以定時(shí)讀RTC,對(duì)比秒數(shù)據(jù),秒不同才更新2812和OLED,
更新2812時(shí),把所有中斷關(guān)閉就可以了。
2812和OLED都有鎖存的,沒必要時(shí)時(shí)更新數(shù)據(jù),只有在需要時(shí)再更新。
如果你的2812不是顯示秒,而是不停在在轉(zhuǎn),理論上可能要開硬件驅(qū)動(dòng),比如SPI+DMA,
這樣你2812發(fā)送數(shù)據(jù)交給DMA去處理,MCU只要給DMA喂新數(shù)據(jù)就可以了。
===以上僅供參考,沒有相關(guān)的實(shí)驗(yàn)支持===
作者: qinlu123    時(shí)間: 2025-3-10 10:08
zxcscm 發(fā)表于 2025-3-9 22:25
你的程序里讀取時(shí)間并在OLED上顯示和ws2812顯示流水燈時(shí)肯定使用了大量的延時(shí),這些延時(shí)是打斷其他程序的根 ...

給你點(diǎn)贊,借樓給樓主說一聲如果有興趣的話可以看看我發(fā)的帖子,試試我的方案




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1