STM32 NVIC學(xué)習(xí)
閱讀nvic:系統(tǒng)中斷管理。
我的理解——管理系統(tǒng)內(nèi)部的中斷,負(fù)責(zé)打開和關(guān)閉中斷。
基礎(chǔ)應(yīng)用1,中斷的初始化函數(shù),包括設(shè)置中斷向量表位置,和開啟所需的中斷兩部分。所有程序中必須的。
用法: void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;//中斷管理恢復(fù)默認(rèn)參數(shù)
#ifdef VECT_TAB_RAM
//如果C/C++ CompilerPreprocessorDefined symbols中的定義了VECT_TAB_RAM(見程序庫更改內(nèi)容的表格)
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); //則在RAM調(diào)試
#else //如果沒有定義VECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);//則在Flash里調(diào)試
#endif //結(jié)束判斷語句
//以下為中斷的開啟過程,不是所有程序必須的。
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//設(shè)置NVIC優(yōu)先級(jí)分組,方式。
//注:一共16個(gè)優(yōu)先級(jí),分為搶占式和響應(yīng)式。兩種優(yōu)先級(jí)所占的數(shù)量由此代碼確定,NVIC_PriorityGroup_x可以是0、1、 2、3、4,分別代表搶占優(yōu)先級(jí)有1、2、4、8、16個(gè)和響應(yīng)優(yōu)先級(jí)有16、8、4、2、1個(gè)。規(guī)定兩種優(yōu)先級(jí)的數(shù)量后,所有的中斷級(jí)別必須在其中選擇,搶占級(jí)別高的會(huì)打斷其他中斷優(yōu)先執(zhí)行,而響應(yīng)級(jí)別高的會(huì)在其他中斷執(zhí)行完優(yōu)先執(zhí)行。
//NVIC_InitStructure.NVIC_IRQChannel = 中斷通道名;
//開中斷,中斷名稱見函數(shù)庫
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
//搶占優(yōu)先級(jí)
//NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
//響應(yīng)優(yōu)先級(jí)
//NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//啟動(dòng)此通道的中斷
//NVIC_Init(&NVIC_InitStructure); //中斷初始化
}