找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

問下大家個(gè)問題,單片機(jī)串口中斷采用定時(shí)器超時(shí)接收方式

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
50黑幣
串口中斷定時(shí)器超時(shí)接收,串口優(yōu)先級(jí)和定時(shí)器優(yōu)先級(jí)怎樣設(shè)置好?是一個(gè)搶占0子1一個(gè)搶占0子2這樣的好,還是一個(gè)搶占0子1一個(gè)搶占1子1這樣的好?對(duì)程序有什么影響?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:883242 發(fā)表于 2023-6-29 20:22 | 只看該作者
都一樣,兩者都分輕重緩急。
回復(fù)

使用道具 舉報(bào)

板凳
ID:624769 發(fā)表于 2023-6-29 20:30 來自觸屏版 | 只看該作者
判斷接收超時(shí),不用設(shè)置優(yōu)先級(jí),最低優(yōu)先即可。
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2023-6-29 21:31 | 只看該作者
串口接收超時(shí)沒有多么講究,大概2~3ms沒有收到數(shù)據(jù)即可判斷接收完畢。只要程序不是寫得怪怪的,不必考慮優(yōu)先級(jí)。
回復(fù)

使用道具 舉報(bào)

5#
ID:161164 發(fā)表于 2023-6-29 22:39 | 只看該作者

大致上是這樣
回復(fù)

使用道具 舉報(bào)

6#
ID:630212 發(fā)表于 2023-6-30 09:07 | 只看該作者
本帖最后由 Xiuer66 于 2023-6-30 10:03 編輯

我用按鍵外部中斷向外發(fā)送數(shù)據(jù),只發(fā)送沒有接收,按鍵按一下,串口就發(fā)送10字節(jié)的一個(gè)數(shù)據(jù),沒有用到定時(shí)器,外部中斷優(yōu)先級(jí)搶占1子0 串口搶占2子0 這樣有可能會(huì)卡住,外部中斷優(yōu)先級(jí)搶占1子0 串口搶占1子1這樣就不會(huì)卡住,外部中斷正常,串口異常不能發(fā)送數(shù)據(jù),是因?yàn)橥獠恐袛鄡?yōu)先級(jí)搶占1子0 串口搶占2子0這樣外部中斷有可能打斷串口中斷而導(dǎo)致之后的串口中斷異常嗎?外部中斷優(yōu)先級(jí)搶占1子0 串口搶占1子1,串口中斷執(zhí)行中就不會(huì)被外部中斷打斷,等串口中斷執(zhí)行完,外部中斷才會(huì)執(zhí)行,所以不會(huì)異常?
回復(fù)

使用道具 舉報(bào)

7#
ID:1034262 發(fā)表于 2023-6-30 09:50 | 只看該作者
慢速事件,我都不開優(yōu)先級(jí)。
回復(fù)

使用道具 舉報(bào)

8#
ID:161164 發(fā)表于 2023-6-30 11:35 | 只看該作者
Xiuer66 發(fā)表于 2023-6-30 09:07
我用按鍵外部中斷向外發(fā)送數(shù)據(jù),只發(fā)送沒有接收,按鍵按一下,串口就發(fā)送10字節(jié)的一個(gè)數(shù)據(jù),沒有用到定時(shí)器 ...


回復(fù)

使用道具 舉報(bào)

9#
ID:1086796 發(fā)表于 2023-7-1 21:15 | 只看該作者
一種常見的做法是將串口中斷設(shè)置為高優(yōu)先級(jí),將定時(shí)器中斷設(shè)置為低優(yōu)先級(jí)。這樣可以確保在串口接收到數(shù)據(jù)時(shí)能夠及時(shí)響應(yīng),并且不會(huì)因?yàn)槎〞r(shí)器中斷而延遲處理串口數(shù)據(jù)。  在這種設(shè)置下,串口中斷具有高優(yōu)先級(jí),可以搶占正在執(zhí)行的定時(shí)器中斷。這意味著如果在定時(shí)器中斷處理期間發(fā)生了串口中斷,系統(tǒng)會(huì)立即切換到串口中斷處理程序,完成串口數(shù)據(jù)的接收和處理。然后,再返回到定時(shí)器中斷處理程序繼續(xù)執(zhí)行。  相比之下,如果將兩個(gè)中斷都設(shè)置為相同的優(yōu)先級(jí),例如都是搶占優(yōu)先級(jí)0,子優(yōu)先級(jí)1,那么在定時(shí)器中斷處理期間發(fā)生的串口中斷將無法立即得到處理,而必須等待定時(shí)器中斷處理完成后才能處理串口中斷。這可能會(huì)導(dǎo)致串口數(shù)據(jù)的丟失或延遲處理。  總的來說,將串口中斷設(shè)置為高優(yōu)先級(jí),將定時(shí)器中斷設(shè)置為低優(yōu)先級(jí),可以確保及時(shí)處理串口數(shù)據(jù),提高系統(tǒng)的響應(yīng)能力。而將兩個(gè)中斷都設(shè)置為相同的優(yōu)先級(jí)可能會(huì)導(dǎo)致串口數(shù)據(jù)的延遲處理或丟失。但是具體的設(shè)置還需要根據(jù)實(shí)際應(yīng)用的需求和系統(tǒng)的整體設(shè)計(jì)來進(jìn)行權(quán)衡和調(diào)整。
回復(fù)

使用道具 舉報(bào)

10#
ID:1085441 發(fā)表于 2023-7-2 01:31 | 只看該作者
最好不要用多個(gè)中斷,程序容易出問題。只用一個(gè)定時(shí)器中斷,串口盡可能用查詢方式。
回復(fù)

使用道具 舉報(bào)

11#
ID:213173 發(fā)表于 2023-7-2 09:29 | 只看該作者
Xiuer66 發(fā)表于 2023-6-30 09:07
我用按鍵外部中斷向外發(fā)送數(shù)據(jù),只發(fā)送沒有接收,按鍵按一下,串口就發(fā)送10字節(jié)的一個(gè)數(shù)據(jù),沒有用到定時(shí)器 ...

用外部中斷作按鍵輸入本身就不是一種好的選擇,在外部中斷函數(shù)里運(yùn)行串口發(fā)送程序更是給自己挖坑。把P3.2改為普通按鍵輸入口就沒有這些麻煩了。
回復(fù)

使用道具 舉報(bào)

12#
ID:291668 發(fā)表于 2023-7-2 14:12 | 只看該作者
中斷和定時(shí)器同時(shí)用,中斷級(jí)別要高一些。定時(shí)器次之。對(duì)程序的影響要看具體執(zhí)行的動(dòng)作及復(fù)雜性。一般影響不大。
回復(fù)

使用道具 舉報(bào)

13#
ID:1086796 發(fā)表于 2023-7-2 15:41 | 只看該作者
串口中斷和定時(shí)器中斷的優(yōu)先級(jí)設(shè)置需要根據(jù)具體的應(yīng)用場(chǎng)景和要求來確定。下面是兩種常見的優(yōu)先級(jí)設(shè)置方式及其可能的影響:  串口搶占定時(shí)器:通過將串口中斷的優(yōu)先級(jí)設(shè)置為高于定時(shí)器中斷,可以確保在接收到串口數(shù)據(jù)時(shí)能夠立即中斷并處理。這種設(shè)置可以有效地處理實(shí)時(shí)性要求較高的串口通信任務(wù),但可能會(huì)對(duì)定時(shí)器的周期性執(zhí)行產(chǎn)生一定的影響,因?yàn)槎〞r(shí)器中斷可能會(huì)被串口中斷所搶占。  定時(shí)器搶占串口:通過將定時(shí)器中斷的優(yōu)先級(jí)設(shè)置為高于串口中斷,可以確保定時(shí)器按照預(yù)定的周期繼續(xù)執(zhí)行,而不受串口中斷的影響。這種設(shè)置適用于對(duì)定時(shí)器中斷的周期性執(zhí)行要求較高的場(chǎng)景,但可能會(huì)延遲串口中斷的處理時(shí)間,對(duì)實(shí)時(shí)性要求較高的串口通信任務(wù)可能受到一定的影響。  具體選擇哪種優(yōu)先級(jí)設(shè)置方式取決于應(yīng)用的需求和優(yōu)先級(jí)分配。需要權(quán)衡實(shí)時(shí)性、穩(wěn)定性和其他任務(wù)的執(zhí)行需求,以確定最合適的設(shè)置方案。同時(shí),還需要注意合理設(shè)計(jì)中斷服務(wù)程序,以盡量減少中斷處理時(shí)間,避免對(duì)整體程序的性能產(chǎn)生過大的影響。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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