問題
單片機(jī)開發(fā)過程中,隨著任務(wù)的增多,完全等待一個(gè)任務(wù)完成后,再去執(zhí)行下一個(gè)任務(wù)的弊端越發(fā)明顯。
在while(1)循環(huán)中實(shí)現(xiàn)LED 周期閃爍,提示系統(tǒng)正常運(yùn)行。
代碼實(shí)例:
采用時(shí)間分割思想,去處理不同的任務(wù),每次執(zhí)行1ms,到500次時(shí),執(zhí)行相應(yīng)功能。
代碼
定義結(jié)構(gòu)體:
Delay:時(shí)間片執(zhí)行時(shí)長(zhǎng);
Period:任務(wù)執(zhí)行周期。
添加(創(chuàng)建)任務(wù):
刪除任務(wù):
更改任務(wù):
執(zhí)行調(diào)度器:
定時(shí)器查詢時(shí)間片:
測(cè)試
封裝好了必要的函數(shù)之后,接下來學(xué)習(xí)如何使用,很簡(jiǎn)單,首先創(chuàng)建幾個(gè)任務(wù),創(chuàng)建了2個(gè)任務(wù),兩個(gè)任務(wù)分別是task01,“時(shí)間片”是50ms(自己根據(jù)需要訂),任務(wù)周期是500ms,task02,“時(shí)間片”是10ms(自己根據(jù)需要訂),任務(wù)周期是1000ms:
在systick(或者其他定時(shí)器)中調(diào)用,關(guān)于Systick的使用:STM32實(shí)例-SysTick實(shí)現(xiàn)2個(gè)LED流水燈效果。
最后只需要在while中調(diào)用調(diào)度器就OK了(類似于LVGL的設(shè)計(jì)思路),根據(jù)我們的設(shè)計(jì),兩個(gè)任務(wù),一個(gè)是500ms打印“task01 test”,另一個(gè)1000ms打印“task02 test”。
審核編輯:劉清
-
LED閃爍
+關(guān)注
關(guān)注
0文章
29瀏覽量
9968 -
STM32單片機(jī)
+關(guān)注
關(guān)注
59文章
549瀏覽量
59295 -
裸機(jī)
+關(guān)注
關(guān)注
0文章
39瀏覽量
6587
原文標(biāo)題:STM32單片機(jī)裸機(jī):實(shí)現(xiàn)多任務(wù)
文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
FreeRTOS多任務(wù)系統(tǒng)的相關(guān)資料推薦
時(shí)間片輪詢+狀態(tài)機(jī)實(shí)現(xiàn)裸機(jī)多任務(wù)相關(guān)資料分享
stm32F4系列單片機(jī)如何利用一個(gè)定時(shí)器和二行代碼實(shí)現(xiàn)多任務(wù)的運(yùn)行?
介紹一種嵌入式裸機(jī)多任務(wù)切換方法
采用Protothread實(shí)現(xiàn)實(shí)時(shí)多任務(wù)系統(tǒng)

51單片機(jī)多任務(wù)機(jī)制的實(shí)現(xiàn)策略研究

單片機(jī)系統(tǒng)多任務(wù)實(shí)現(xiàn)方法
51單片機(jī)多任務(wù)操作系統(tǒng)的原理與實(shí)現(xiàn)
如何使用51單片機(jī)實(shí)現(xiàn)多任務(wù)機(jī)制的策略詳細(xì)資料說明

單片機(jī)多任務(wù)處理方案
使用單片機(jī)實(shí)現(xiàn)道路交通燈多任務(wù)控制系統(tǒng)的課件說明

實(shí)時(shí)多任務(wù)機(jī)制在低功耗單片機(jī)系統(tǒng)中的最小實(shí)現(xiàn)
時(shí)間片輪詢+狀態(tài)機(jī)實(shí)現(xiàn)裸機(jī)多任務(wù)

評(píng)論