新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32的V3.5庫(kù)Systick優(yōu)先級(jí)設(shè)置的問題

STM32的V3.5庫(kù)Systick優(yōu)先級(jí)設(shè)置的問題

作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
以前的舊版本的庫(kù)通過如下函數(shù)來設(shè)置Systick的優(yōu)先級(jí)。但新的V3.5的庫(kù)不含該函數(shù),查詢良久才得到答案,發(fā)現(xiàn)網(wǎng)上那個(gè)不少是錯(cuò)誤的,誤人子弟。
NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 0, 0);
查詢結(jié)果總結(jié)如下:
1. STM32中斷優(yōu)先級(jí)是使用4-bit來表示的,即總共有16個(gè)級(jí)別。
2. 優(yōu)先級(jí)分為2個(gè)部分:搶先優(yōu)先級(jí)和子優(yōu)先級(jí),上述的4個(gè)bit可以靈活分配給搶先優(yōu)先級(jí)和子優(yōu)先級(jí),比如,1個(gè)bit表示搶先優(yōu)先級(jí),則剩余3個(gè)bit表示子優(yōu)先級(jí)。固件庫(kù)中對(duì)應(yīng)的函數(shù)是:NVIC_PriorityGroupConfig()。
3. 中斷分為內(nèi)核中斷和芯片(STM32)中斷,配置的寄存器位置是不同的,芯片中斷的配置使用NVIC,內(nèi)核中斷(比如systick)的配置使用SCB。
4. 內(nèi)核中斷優(yōu)先級(jí)設(shè)置使用函數(shù):NVIC_SetPriority(),此函數(shù)需要一個(gè)表示優(yōu)先級(jí)的參數(shù),可以利用NVIC_EncodePriority()這個(gè)函數(shù)生成,比如:
NVIC_SetPriority(SysTick_IRQn,
NVIC_EncodePriority(NVIC_GetPriorityGrouping(), 0, 1));
//搶先優(yōu)先級(jí):0(最高);子優(yōu)先級(jí):1(中)


評(píng)論


技術(shù)專區(qū)

關(guān)閉