国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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è)計思路的評論 (共 條)

分享到微博請遵守國家法律
延津县| 寿光市| 宣恩县| 体育| 卓资县| 莱芜市| 武鸣县| 阿合奇县| 阜平县| 诸暨市| 松阳县| 饶河县| 衢州市| 大洼县| 阿鲁科尔沁旗| 敦化市| 高淳县| 扶余县| 平定县| 白山市| 大田县| 平陆县| 清苑县| 永年县| 麟游县| 信阳市| 安徽省| 砀山县| 灵丘县| 江孜县| 郯城县| 行唐县| 达州市| 桐乡市| 克拉玛依市| 绵阳市| 开化县| 天水市| 东乡县| 台北县| 平舆县|