最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

在arduino上運(yùn)行FreeRTOS

2023-03-12 16:49 作者:aptinstallsl  | 我要投稿

Arduino運(yùn)行freertos

注意:不同的mcu對(duì)應(yīng)不同的庫(kù)


創(chuàng)建和運(yùn)行





注意:任務(wù)函數(shù)不能有返回值、任務(wù)名自定義、函數(shù)參數(shù)統(tǒng)一寫成無類型指針。


注意:通常要求函數(shù)不能結(jié)束,某些情況要任務(wù)刪除。

任務(wù)創(chuàng)建參數(shù)

1.任務(wù)函數(shù)指針(自己寫的函數(shù))

2.任務(wù)名,在調(diào)試時(shí)候需要,可以為NULL

3.棧空間大小Arduino uno 、nano是1個(gè)單位2字節(jié),其他需要根據(jù)freertos實(shí)現(xiàn)的具體情況來判斷【很重要】不恰當(dāng)?shù)拇笮∪菀譻tackoverfloat

4.傳遞給任務(wù)的參數(shù)指針,不用可以為NULL

5.指定優(yōu)先級(jí),freertos最低優(yōu)先級(jí)是0,最高優(yōu)先級(jí)不會(huì)大于系統(tǒng)優(yōu)先級(jí)

6.任務(wù)句柄,可以操作任務(wù)對(duì)象的優(yōu)先級(jí),可以刪除任務(wù)對(duì)象,可以為NULL。


系統(tǒng)跑起來已經(jīng)內(nèi)置。

例子

防止優(yōu)化的volatile,不好的延時(shí)方法如下

多任務(wù)模型如下

任務(wù)延時(shí)函數(shù):讓任務(wù)處于阻塞態(tài)來實(shí)現(xiàn)延時(shí)而不是空轉(zhuǎn)cpu

Arduino nano庫(kù)的心跳周期是15ms(portTICK_PERIOD_MS)

如下T為ms

例子

任務(wù)優(yōu)先級(jí)




只有一個(gè)任務(wù)運(yùn)行(卡點(diǎn)截的圖不嚴(yán)謹(jǐn),應(yīng)當(dāng)上動(dòng)圖,手機(jī)上沒這功能)

優(yōu)先執(zhí)行最高的任務(wù),超過一個(gè)就輪流執(zhí)行

任務(wù)延時(shí)函數(shù)可以阻塞高優(yōu)先級(jí)任務(wù),然后將cpu釋放給低優(yōu)先級(jí)任務(wù)。

所有任務(wù)都采用任務(wù)延時(shí)函數(shù)時(shí),如下圖,可以使低優(yōu)先級(jí)任務(wù)得到cpu

優(yōu)先級(jí)限制


能使用的是0(用戶不會(huì)使用,系統(tǒng)使用這個(gè)),1,2,3優(yōu)先級(jí)

任務(wù)刪除函數(shù)

更多的使用自刪除

任務(wù)1中創(chuàng)建任務(wù)2之后自刪除,

任務(wù)2中創(chuàng)建任務(wù)1之后自刪除。

不停的生滅任務(wù)

如下任務(wù)1:


如下任務(wù)2:

給任務(wù)傳參數(shù)


定義要傳給任務(wù)參數(shù)結(jié)構(gòu)體

并生成四組參數(shù)

任務(wù)函數(shù)中接受參數(shù)

創(chuàng)建不同入?yún)⒌膶?shí)例:實(shí)現(xiàn)任務(wù)類有一個(gè),不同參數(shù)形成多個(gè)實(shí)例的效果。

信號(hào)量:任務(wù)間通信之一(傳遞信號(hào)0/1有無)




信號(hào)量獲取

按指定時(shí)間等待或者死等

信號(hào)量的使用場(chǎng)景:信號(hào)(按鈕)輸入如下

定義并初始化信號(hào)量對(duì)象

按鍵任務(wù)

初始化(1.上一次按鈕讀取狀態(tài)初始化為高2.設(shè)置引腳為輸入模式3.等待一點(diǎn)時(shí)間讓cpu把狀態(tài)裝載進(jìn)去)

進(jìn)循環(huán)(當(dāng)確認(rèn)按下key的時(shí)候給一個(gè)信號(hào))


led任務(wù)初始化狀態(tài)后死等按鍵給的的信號(hào)。

得到一個(gè)信號(hào)執(zhí)行一次任務(wù)

注意:給出信號(hào)太頻繁時(shí),處理信號(hào)如果時(shí)間比較長(zhǎng),容易丟失信號(hào)。

計(jì)數(shù)信號(hào)量:能保存超過1個(gè)的信號(hào)量,解決信號(hào)給出頻繁導(dǎo)致丟失的情況。

參數(shù):1.最多能存的信號(hào)量2.初始時(shí)存放的信號(hào)量

唯一需要改的是初始化信號(hào)量Binary->Counting 二值信號(hào)變成計(jì)數(shù)信號(hào)。

注意:1.計(jì)數(shù)最大值要能保證安全(不會(huì)丟失信號(hào))也不宜過多,內(nèi)存占用需考慮。2.通常初始值為0,但不排除某些場(chǎng)景初始值不為0的情況。


隊(duì)列:任務(wù)間通信之二(傳輸數(shù)據(jù))

與信號(hào)量操作類似區(qū)別于發(fā)送的是數(shù)據(jù)


參數(shù):1.最多能存放多少個(gè)數(shù)據(jù)2.每個(gè)數(shù)據(jù)的大小(字節(jié))

參數(shù):1.隊(duì)列對(duì)象2.數(shù)據(jù)指針3.排隊(duì)最大時(shí)長(zhǎng)

隊(duì)列先進(jìn)先出原則

返回如下:



參數(shù):1.同2.同3.等隊(duì)時(shí)間

例子

定義按鍵數(shù)據(jù)結(jié)構(gòu)體和隊(duì)列

初始化隊(duì)列,并生成四個(gè)按鍵任務(wù)實(shí)例,1個(gè)led任務(wù)實(shí)例

按鈕任務(wù)


檢測(cè)到按鍵確實(shí)被按下后發(fā)消息

確實(shí):這一次是低電平,上一次(key_temp)是高電平


led任務(wù)

可以通過while等


如上,我想到了可以做一個(gè)midi鍵盤/??

隊(duì)列的其他操作

如上:尾插和頭插,默認(rèn)為尾插??梢詢?yōu)先響應(yīng)重要的消息


完結(jié)??感謝up

除此之外Freertos還有其他進(jìn)階函數(shù)可以玩。

在arduino上運(yùn)行FreeRTOS的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
沛县| 吉林市| 穆棱市| 盘锦市| 江孜县| 山阳县| 赤壁市| 大田县| 五华县| 澄城县| 克什克腾旗| 雷州市| 和平区| 永仁县| 沁水县| 通河县| 宜黄县| 任丘市| 兴国县| 娄烦县| 威海市| 蒲江县| 台东市| 临沧市| 天全县| 江津市| 剑阁县| 天等县| 绩溪县| 屏东市| 读书| 兰州市| 南昌县| 眉山市| 崇义县| 奉化市| 洪洞县| 汕尾市| 庄河市| 伊川县| 桃园县|