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

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

《時間觸發(fā)嵌入式系統(tǒng)設(shè)計模式》-多任務(wù)程序設(shè)計思路

2021-06-28 23:43 作者:想啥_做啥  | 我要投稿

多個LED以不同頻率運行程序變形

本文帶你一步一步走進(jìn)多任務(wù),用非常接地氣的方式帶你了解多任務(wù),無論是嵌入式小白還是入行多年嵌入式大牛都有一定的借鑒作用,接下來我們多種方法來實現(xiàn)三個LED燈以不同的頻率閃爍

實驗內(nèi)容:黃色燈1Hz(500ms),藍(lán)色燈2Hz(250ms),紅色燈4Hz(125ms)

引腳關(guān)系:黃色燈->P0.0、藍(lán)色燈->P0.1、紅色燈->P0.2

方案一:在大循環(huán)中計數(shù)的方式

實驗效果:

程序代碼:main.c文件

main.h文件

LED.c文件

LED.h文件

實驗按照我們預(yù)想的那樣,實現(xiàn)了三個LED燈以不同頻率閃爍;這個例子基本實現(xiàn)了多任務(wù)執(zhí)行,任務(wù)執(zhí)行的最小周期取決于我們的系統(tǒng)周期,像該例子中,系統(tǒng)周期就是5ms(200Hz);那么我們想要實現(xiàn)高于200Hz執(zhí)行的任務(wù)可以修改系統(tǒng)延時SYSTEM_DELAY,參考LED閃爍的任務(wù)實現(xiàn)方式嘗試添加其他任務(wù) ,并驗證實驗效果。

思考:我們注意到while循環(huán)中用到了等待延時函數(shù)delay( SYSTEM_DELAY );,我們覺得這樣還不夠,有沒有方法可以在main函數(shù)大循環(huán)中不用任何延時來實現(xiàn)不同頻率LED燈的閃爍,大家可以短暫的思考下,帶著對問題的思考我們一起來看下方案二的實現(xiàn)方式,或許會給你一些啟發(fā)。

方案二:采用定時器

? ? ?我們知道無論哪種單片機(jī)都有定時器,像高級一點的單片機(jī)還有專門的系統(tǒng)定時器(systick),比如說: STM32,那么同樣是減法運算,我們把它放在在定時器中來進(jìn)行操作

為了區(qū)別于方案1,我們把每個任務(wù)的周期改一下:

實驗內(nèi)容:黃色燈4Hz(125ms),藍(lán)色燈2Hz(250ms),紅色燈1Hz(500ms)

引腳關(guān)系:黃色燈->P0.0、藍(lán)色燈->P0.1、紅色燈->P0.2

定時器:我們這里選用T0,定時器周期計算參考宏晶公司提供的軟件里面的示例代碼,我們這里應(yīng)為沒有讓定時器工作在1T狀態(tài),所以跟傳統(tǒng)單片機(jī)是一樣的操作方式。

T0中斷時間計算

實驗效果

程序代碼:main.c源文件

main.h頭文件

LED燈部分的頭文件和源文件沒有改動,大家可以參考方案一的代碼。

方案二多任務(wù)原理:采用定時器T0的1ms周期性中斷操作來對每個任務(wù)要計時的量來進(jìn)行減法運算,當(dāng)減到零時,運行任務(wù),然后再重新進(jìn)行任務(wù)延時賦值。

總結(jié):

1、兩種多任務(wù)方案都能滿足小規(guī)模嵌入式系統(tǒng)的要求,并且添加多個任務(wù)也非常方便

2、采用任務(wù)方式編寫程序,我們更多的時候不是在寫代碼,而是在考慮如何讓更多的代碼可重復(fù)利用以及修改的方便性

3、方案二已經(jīng)接近時間片輪詢法系統(tǒng)雛形,可以移植到其他單片機(jī)上同樣能使用

預(yù)告:接下來我們將對方案二中的多任務(wù)程序進(jìn)行進(jìn)一步改造,使之能適應(yīng)不同功能需求,并且能方便的添加任務(wù),從而達(dá)到我們對一個簡單的多任務(wù)系統(tǒng)的要求,同時在接下來的講解中還會牽涉到數(shù)據(jù)結(jié)構(gòu),我們也大可不必?fù)?dān)心,因為只使用到了其中一部分?jǐn)?shù)據(jù)結(jié)構(gòu),大家可以提前去預(yù)習(xí)下。

可能很多人在大學(xué)里面把數(shù)據(jù)結(jié)構(gòu)學(xué)完,考試完都不清楚數(shù)據(jù)結(jié)構(gòu)有些什么用途。

給大家推薦一本書,大家可以參考下:

同樣的,還是希望大家多多支持正版書籍,每一本好書都值得你多次去閱讀?。?/p>


《時間觸發(fā)嵌入式系統(tǒng)設(shè)計模式》-多任務(wù)程序設(shè)計思路的評論 (共 條)

分享到微博請遵守國家法律
监利县| 江孜县| 固镇县| 邵阳市| 昂仁县| 普定县| 苍梧县| 禹城市| 阜阳市| 密云县| 巨野县| 江都市| 壶关县| 客服| 昌都县| 南川市| 濉溪县| 沧源| 绵竹市| 霍邱县| 军事| 江津市| 玛沁县| 南城县| 清水县| 磐安县| 比如县| 西和县| 兴国县| 贵阳市| 乌兰浩特市| 和顺县| 大邑县| 运城市| 忻城县| 喀喇沁旗| 资阳市| 邯郸县| 安庆市| 正镶白旗| 施秉县|