STM32 中斷配置 自我學(xué)習(xí)總結(jié)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
簡(jiǎn)單記錄一下STM32 的中斷配置說(shuō)明!
----第一部分是---中斷向量表-----
--------這個(gè)只是簡(jiǎn)單參照----不同版本也有些不一樣--但是大同小異----自己可以到啟動(dòng)文件---startup_stm32f10x_hd.s中去查找。
----第二部分---中斷優(yōu)先級(jí)配置
static void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //分組
NVIC_InitStructure.NVIC_IRQChannel =EXTI0_IRQn; //主要地方
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //搶占
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //次優(yōu)先級(jí)
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
----第三部分---中斷端口等配置
void EXTI_PA0_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA " RCC_APB2Periph_AFIO,ENABLE);
NVIC_Configuration();
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //端口上拉
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0); //PA0為外部中斷輸入端
EXTI_InitStructure.EXTI_Line =EXTI_Line0;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中斷模式---另一個(gè)是事件模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //觸發(fā)方式是下降沿
EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能
EXTI_Init(&EXTI_InitStructure);
}
----第四部分---中斷函數(shù)
void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line0) != RESET)//產(chǎn)生相應(yīng)中斷
{
.........................
EXTI_ClearITPendingBit(EXTI_Line0); //清除中斷標(biāo)志位
}
}