SysTick的優(yōu)先級(jí)配置,常見(jiàn)的有兩種說(shuō)法,這兩種說(shuō)法完全相反,依次說(shuō)一下各自特點(diǎn)。
第一種:
SysTick中斷優(yōu)先級(jí)應(yīng)該設(shè)置為高。
在使用實(shí)時(shí)操作系統(tǒng)時(shí),把內(nèi)核“心跳”定時(shí)器的優(yōu)先級(jí)調(diào)高一些。持這種觀點(diǎn)的人認(rèn)為優(yōu)先級(jí)調(diào)高了,使SysTick的ISR能搶占其它ISR,保證系統(tǒng)心跳的準(zhǔn)確性,心跳準(zhǔn)確了,才能保證實(shí)時(shí)性,SysTick的ISR一般都很短小精悍,對(duì)被搶占的ISR影響較小。
我們來(lái)看一下優(yōu)先級(jí)高了會(huì)怎么樣,如下圖所示,SysTick ISR能夠搶占用戶ISR,SysTick依然按照設(shè)定值規(guī)律性中斷。這種情況下對(duì)于線程時(shí)間片輪轉(zhuǎn)的方式比較準(zhǔn)確,輪轉(zhuǎn)實(shí)時(shí)性好,基于SysTick的軟定時(shí)器也比較精準(zhǔn)。但是如果用戶中斷有很多種,而且很頻繁,那么SysTick會(huì)不停的打斷用戶中斷,不斷的出棧入棧,影響用戶中斷的實(shí)時(shí)性。所以說(shuō)SysTick中斷優(yōu)先級(jí)調(diào)高了有好處也有壞處。
第二種:
SysTick中斷優(yōu)先級(jí)應(yīng)該設(shè)置為低。
持這種觀點(diǎn)的人認(rèn)為優(yōu)先級(jí)設(shè)置為低了,用戶中斷能夠搶占SysTick,用戶中斷更準(zhǔn)確,能快速響應(yīng)內(nèi)外部中斷。我們來(lái)看一下優(yōu)先級(jí)調(diào)低了有什么現(xiàn)象。
如下圖所示,在執(zhí)行用戶ISR的時(shí)候,SysTick中斷到來(lái),由于優(yōu)先級(jí)低,只能掛起等待,用戶ISR結(jié)束后立即運(yùn)行,最終導(dǎo)致兩次“心跳”間隔大,比如軟定時(shí)器等。從圖中可以看出,由于于SysTick有自動(dòng)裝載功能,沒(méi)有影響下一次中斷。
上圖中雖然某次心跳間隔大了,但是沒(méi)有“丟步”。如果用戶中斷種類多且很頻繁,如下圖所示,SysTick少進(jìn)入一次中斷,這種情況不準(zhǔn)確了。SysTick中斷不準(zhǔn)了,線程時(shí)間片輪轉(zhuǎn)就不準(zhǔn)了,基于SysTick的軟定時(shí)器也不準(zhǔn)了。很多人人認(rèn)為那可是系統(tǒng)時(shí)鐘呀,怎么能夠不準(zhǔn)確,那還能叫實(shí)時(shí)操作系統(tǒng)嗎?仔細(xì)想一下就知道了,優(yōu)先級(jí)調(diào)低了,用戶中斷不受SysTick中斷影響,保障了用戶中斷,就是保障實(shí)時(shí)性!
總結(jié):
前面的文章中分析了(參見(jiàn)下面擴(kuò)展閱讀),在實(shí)時(shí)操作系統(tǒng)中,實(shí)時(shí)性最高的是中斷程序,要及時(shí)的處理內(nèi)外部中斷,線程內(nèi)執(zhí)行的代碼因?yàn)樾枰蝿?wù)調(diào)度等,實(shí)時(shí)性差一些。
如果SysTick優(yōu)先級(jí)調(diào)高,影響了用戶中斷,再加上線程調(diào)度本身也不準(zhǔn)確,那么整個(gè)操作系統(tǒng)沒(méi)有準(zhǔn)確的地方了。因此我個(gè)人同意第二種說(shuō)法,SysTick優(yōu)先級(jí)降低,保障用戶中斷的實(shí)時(shí)性,線程的實(shí)時(shí)性放到第二位,這樣才能體現(xiàn)出實(shí)時(shí)特性。
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7154瀏覽量
125644 -
中斷
+關(guān)注
關(guān)注
5文章
905瀏覽量
42823 -
ISR
+關(guān)注
關(guān)注
0文章
38瀏覽量
14807 -
線程
+關(guān)注
關(guān)注
0文章
508瀏覽量
20241 -
Systick
+關(guān)注
關(guān)注
0文章
63瀏覽量
13603
發(fā)布評(píng)論請(qǐng)先 登錄
systick的中斷優(yōu)先級(jí)是否應(yīng)該設(shè)置為最高優(yōu)先級(jí)的嵌套中斷?
systick的優(yōu)先級(jí)比外設(shè)的優(yōu)先級(jí)高還是低,很多人回答不了
STM32滴答時(shí)鐘SYStick的優(yōu)先級(jí)設(shè)定方法是什么
怎樣去設(shè)定STM32滴答時(shí)鐘SYStick的優(yōu)先級(jí)呢
Systick中斷優(yōu)先級(jí)的知識(shí)點(diǎn)匯總,絕對(duì)實(shí)用
RT-Thread的SysTick和pendSV的中斷優(yōu)先級(jí)該怎樣去設(shè)置呢
如何配置SysTick定時(shí)器中斷優(yōu)先級(jí)?
CortexM4內(nèi)核Stm32-HAL_Init()及HAL_InitTick(TICK_INT_PRIORITY()詳解——Systick中斷優(yōu)先級(jí)

關(guān)于stm32內(nèi)核外設(shè)Systick與普通外設(shè)中斷優(yōu)先級(jí)比較的驗(yàn)證實(shí)驗(yàn)(fishing_10)

Cortex-M中斷及FreeRTOS中斷優(yōu)先級(jí)配置原理

中斷優(yōu)先級(jí)處理的原則及配置 搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)的區(qū)別

什么是優(yōu)先級(jí)反轉(zhuǎn)

為什么使用CubeMx配置NVIC時(shí)不見(jiàn)子優(yōu)先級(jí)選項(xiàng)

GD32如何配置中斷優(yōu)先級(jí)分組以及中斷優(yōu)先級(jí)

評(píng)論