日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32 关于外部中断线、中断源和中断服务函数的问题

發(fā)布時間:2024/4/13 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32 关于外部中断线、中断源和中断服务函数的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?????????????????????????????????????????? STM32 關(guān)于外部中斷線、中斷源和中斷服務(wù)函數(shù)的問題

中斷線問題:

上圖可以看出,PA0、PB0...PG0共用的EXTI0中斷線,PA1、PB1...PG1共用的EXTI1中斷線,也就是 編程里面的(如下圖庫文件),對應(yīng)16個中斷線,后面三個是專用的中斷線,不做討論。

?有人要問,假設(shè):我設(shè)置的引腳是PB9和PE9都開啟外部中斷怎么辦?小編告訴你,這還真辦不了,我實測過。配置函數(shù)的時候后覆蓋之前的函數(shù)的(如下圖所示)

如果這樣配置的話,會出現(xiàn)出貨光電1的初始化覆蓋掉編碼盤的初始化,說白了就是編碼盤的設(shè)置被覆蓋掉了,結(jié)果是外部中斷? 出貨光電1管腳會觸發(fā)而編碼盤就不起作用了,這也是STM32其中一個問題所在吧! 反過來,結(jié)果是外部中斷? 編碼盤 管腳會觸發(fā) 而 出貨光電1管腳就不起作用了!

中斷源問題:

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0); //設(shè)置GPIOX中斷源以及哪個中斷腳EXTI_InitStructure.EXTI_Line = EXTI_Line0;//中斷線EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//設(shè)置為外部中斷模式EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//上升沿觸發(fā)EXTI_InitStructure.EXTI_LineCmd = ENABLE;//中斷線使能EXTI_Init(&EXTI_InitStructure);//配置使能

中斷服務(wù)函數(shù):

?簡單的配置:

void EXTI15_10_IRQHandler(void)//中斷服務(wù)函數(shù),如果中斷線是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)//中斷服務(wù)函數(shù),如果中斷線是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); }

?每個中斷服務(wù)函數(shù)代表一個或者一類,上面的代碼說明:只要是中斷線在EXTI_Line?? 10-15 的,中斷服務(wù)函數(shù)就只有一個,但是由于中斷線只有唯一性,可以在中斷服務(wù)函數(shù)里面判斷到底是哪個中斷線觸發(fā),這也保證不會誤觸發(fā)或者是占線的一系列的問題。

如上圖,外部中斷分為幾類:如下:

DCD EXTI0_IRQHandler ; EXTI Line 0//只是管腳的中斷服務(wù)函數(shù),還有串口等等中斷服務(wù)函數(shù)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

所以在配置外部中斷服務(wù)函數(shù)或者其他中斷服務(wù)函數(shù)的問題時,參照:庫啟動件 startup_stm32f10x_hd.s

?

此文章只是個人交流,學(xué)術(shù)有限!不足之處,望各位愛好者批評指正!

總結(jié)

以上是生活随笔為你收集整理的STM32 关于外部中断线、中断源和中断服务函数的问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。