STM32的:外部中断线EXTIN和外部中断向量EXTIN_IRQn和中断服务程序入口EXTIN_IRQHandler详解
生活随笔
收集整理的這篇文章主要介紹了
STM32的:外部中断线EXTIN和外部中断向量EXTIN_IRQn和中断服务程序入口EXTIN_IRQHandler详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:硬件情況:采用PA11管腳
需要明確的是,PxN管腳共用外部中斷線EXTIN和外部中斷向量EXTIN_IRQn和中斷服務程序入口EXTIN_IRQHandler,但是需要注意的是[9...5]共用EXTI9_5_IRQn和EXTI9_5_IRQHandler、[15...10]共用EXTI15_10_IRQn和EXTI15_10_IRQHandler。
二:配置過程
1.設置時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);注意:需要打開AFIO時鐘。
2.配置GPIO
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);注意:采用浮空輸入方式
3.將GPIO管腳與外部中斷線連接
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource11);注意:很重要
4.配置EXTI
EXTI_InitStructure.EXTI_Line = EXTI_Line11; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);注意:包括觸發方式等等
5.配置NVIC
NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; //PPP外部中斷線 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);6.寫中斷服務程序
void EXTI15_10_IRQHandler(void) {if (EXTI_GetITStatus(EXTI_Line11) != RESET){EXTI_ClearITPendingBit(EXTI_Line11);//清除標志...} }?
總結
以上是生活随笔為你收集整理的STM32的:外部中断线EXTIN和外部中断向量EXTIN_IRQn和中断服务程序入口EXTIN_IRQHandler详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 已解决:大家使用原子哥的延时函数dela
- 下一篇: UART, SPI, IIC的详解及三者