找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2882|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

關(guān)于單片機(jī)主程序任務(wù)調(diào)度問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:232366 發(fā)表于 2021-2-19 10:36 來自手機(jī) | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
在寫程序時通常做法是把一些應(yīng)用程序驅(qū)動程序打包到一個子程序例如
void display_Drive()數(shù)碼管底層驅(qū)動函數(shù)(數(shù)碼管驅(qū)動掃描時間是1ms通過定時器控制標(biāo)志位在主程序查詢標(biāo)志位)
void KEY_Scan()按鍵掃描函數(shù)
void Display_data()數(shù)碼管數(shù)據(jù)分配函數(shù)
void Key_serve()按鍵服務(wù)函數(shù)
根據(jù)以上的函數(shù)通過多文件編程外部聲名后在主程序中調(diào)用那么怎么樣才能盡可能的減少主程序大循環(huán)里執(zhí)行一次的時間把這個時間節(jié)省下來讓cpu去處理別的事情  上面的子函數(shù)為例  哪些又需要實(shí)時掃描哪些又可以不用掃描這么快可以放后一點(diǎn)這種又應(yīng)該怎么實(shí)現(xiàn)呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:884857 發(fā)表于 2021-2-19 11:15 | 只看該作者
比如外部按鍵的采樣等信息,有實(shí)時查詢(即一段時間后查詢一次)和中斷處理(即用中斷的方式去采樣),一般不采用查詢的方式,那樣耗費(fèi)時間。顯示部分一般注意一個鬼影問題就可以了,就是人眼在20ms以內(nèi)的變化是看不出來的,看不出閃爍的問題即可。
至于具體怎么用,要結(jié)合你項目上的問題來決定,如果按鍵優(yōu)先級很低,而且又需要中斷處理多個任務(wù),資源受限,也可改用查詢的方式處理按鍵。
對MCU來說,順序執(zhí)行放在main函數(shù)中的函數(shù)盡量封裝一下,比如init函數(shù)、main_loop函數(shù)等,具體函數(shù)實(shí)現(xiàn)不要在main中,這樣看著更清爽

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:112099 發(fā)表于 2021-2-19 11:40 | 只看該作者
我其實(shí)沒怎么看懂你的問題;不過我通常的寫法是設(shè)置一個定時器計時20ms左右,然后在里面執(zhí)行掃描按鍵,按鍵處理函數(shù)等;其他如果要1ms的可以再用一個定時器計時然后在主程序執(zhí)行,不知道你懂不懂我的意思😂

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:451718 發(fā)表于 2021-2-19 11:58 | 只看該作者
很多種方法都可以實(shí)現(xiàn)啊,首先要弄清楚定時器的工作機(jī)制,你這個問題就迎刃而解了。給你一個思路,用定時器做個時間定標(biāo)。每200ms定標(biāo)自加,然后switch(定標(biāo))。自加到最大值時歸零。  當(dāng)然,為了保證按鍵響應(yīng)的及時性,要給按鍵分配一個特殊的定標(biāo),每50ms檢測一次,如果檢測到按鍵響應(yīng),就優(yōu)先執(zhí)行按鍵服務(wù)。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

5#
ID:429003 發(fā)表于 2021-2-19 12:29 | 只看該作者
1.優(yōu)化任務(wù)實(shí)現(xiàn)方式,盡可能的減少純延遲的等待操作。
2.避免不了使用純延遲,且有其它應(yīng)急處理,可以設(shè)計一個專用延遲函數(shù),根據(jù)事件類型,標(biāo)識等,在延遲函數(shù)中處理一些應(yīng)急數(shù)據(jù)。
3.沒有較長延時的,能利用中斷快速處理的,則不要麻煩主任務(wù)。
4.任務(wù)相對復(fù)雜,功能較多,可以考慮使用嵌入式操作系統(tǒng)。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

6#
ID:232366 發(fā)表于 2021-2-19 15:57 來自手機(jī) | 只看該作者
robinsonlin 發(fā)表于 2021-2-19 11:58
很多種方法都可以實(shí)現(xiàn)啊,首先要弄清楚定時器的工作機(jī)制,你這個問題就迎刃而解了。給你一個思路,用定時器 ...

非常感謝非常感謝我明白你意思!我先去試試看去
回復(fù)

使用道具 舉報

7#
ID:232366 發(fā)表于 2021-2-19 17:16 來自手機(jī) | 只看該作者
xstong 發(fā)表于 2021-2-19 12:29
1.優(yōu)化任務(wù)實(shí)現(xiàn)方式,盡可能的減少純延遲的等待操作。
2.避免不了使用純延遲,且有其它應(yīng)急處理,可以設(shè)計 ...

感謝提出建議
回復(fù)

使用道具 舉報

8#
ID:883031 發(fā)表于 2021-2-21 10:49 | 只看該作者
可根據(jù)任務(wù)的實(shí)時性要求不同來劃分,盡量少用軟件延時,定時中斷的方式可采納
回復(fù)

使用道具 舉報

9#
ID:390416 發(fā)表于 2021-2-22 17:08 | 只看該作者
你的這個要求 就是《人人學(xué)會單片機(jī)》視頻教程講解的東西,框架式編程方式
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表