STM32 关于外部中断线、中断源和中断服务函数的问题
?????????????????????????????????????????? STM32 關于外部中斷線、中斷源和中斷服務函數的問題
中斷線問題:
上圖可以看出,PA0、PB0...PG0共用的EXTI0中斷線,PA1、PB1...PG1共用的EXTI1中斷線,也就是 編程里面的(如下圖庫文件),對應16個中斷線,后面三個是專用的中斷線,不做討論。
?有人要問,假設:我設置的引腳是PB9和PE9都開啟外部中斷怎么辦?小編告訴你,這還真辦不了,我實測過。配置函數的時候后覆蓋之前的函數的(如下圖所示)
如果這樣配置的話,會出現出貨光電1的初始化覆蓋掉編碼盤的初始化,說白了就是編碼盤的設置被覆蓋掉了,結果是外部中斷? 出貨光電1管腳會觸發而編碼盤就不起作用了,這也是STM32其中一個問題所在吧! 反過來,結果是外部中斷? 編碼盤 管腳會觸發 而 出貨光電1管腳就不起作用了!
中斷源問題:
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0); //設置GPIOX中斷源以及哪個中斷腳EXTI_InitStructure.EXTI_Line = EXTI_Line0;//中斷線EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//設置為外部中斷模式EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//上升沿觸發EXTI_InitStructure.EXTI_LineCmd = ENABLE;//中斷線使能EXTI_Init(&EXTI_InitStructure);//配置使能中斷服務函數:
?簡單的配置:
void EXTI15_10_IRQHandler(void)//中斷服務函數,如果中斷線是10-15。 {if(EXTI_GetITStatus(EXTI_Line10) != RESET) {Beep_ON;SOFT_DELAY; Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line10); } if(EXTI_GetITStatus(EXTI_Line11) != RESET) {Beep_ON;SOFT_DELAY; Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line11); } if(EXTI_GetITStatus(EXTI_Line12) != RESET) {Beep_ON;SOFT_DELAY;Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line12); } void EXTI9_5_IRQHandler(void)//中斷服務函數,如果中斷線是5-9。 {if(EXTI_GetITStatus(EXTI_Line5) != RESET) {Beep_ON;SOFT_DELAY; Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line5); } if(EXTI_GetITStatus(EXTI_Line8) != RESET) {Beep_ON;SOFT_DELAY; Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line8); } if(EXTI_GetITStatus(EXTI_Line9) != RESET) {Beep_ON;SOFT_DELAY;Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line9); }?每個中斷服務函數代表一個或者一類,上面的代碼說明:只要是中斷線在EXTI_Line?? 10-15 的,中斷服務函數就只有一個,但是由于中斷線只有唯一性,可以在中斷服務函數里面判斷到底是哪個中斷線觸發,這也保證不會誤觸發或者是占線的一系列的問題。
如上圖,外部中斷分為幾類:如下:
DCD EXTI0_IRQHandler ; EXTI Line 0//只是管腳的中斷服務函數,還有串口等等中斷服務函數DCD EXTI1_IRQHandler ; EXTI Line 1 DCD EXTI2_IRQHandler ; EXTI Line 2DCD EXTI3_IRQHandler ; EXTI Line 3DCD EXTI4_IRQHandler ; EXTI Line 4DCD EXTI9_5_IRQHandler ; EXTI Line 9..5DCD EXTI15_10_IRQHandler ; EXTI Line 15..10所以在配置外部中斷服務函數或者其他中斷服務函數的問題時,參照:庫啟動件 startup_stm32f10x_hd.s
?
此文章只是個人交流,學術有限!不足之處,望各位愛好者批評指正!
總結
以上是生活随笔為你收集整理的STM32 关于外部中断线、中断源和中断服务函数的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Altium Desiger18 打印
- 下一篇: 退耦电容,旁路电容和滤波电容的一些区别?