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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

STM32F407野火霸天虎系列笔记(四)EXTI

發(fā)布時間:2024/1/1 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32F407野火霸天虎系列笔记(四)EXTI 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、前言

?????????我在學(xué)習(xí)的過程中,經(jīng)歷過毫無頭緒,找到一堆學(xué)習(xí)資料卻不知從何開始的痛苦。我希望我整理的筆記,不光可以方便自己在以后的項(xiàng)目中拿來即用,也希望能夠?qū)δ切┫矚g玩硬件、愛折騰的小伙伴有所幫助。如果你們覺得我的文章對你們有用,歡迎大家點(diǎn)贊+收藏,讓我知道,我的工作是有價值的。

? ? ? ? 這篇筆記,綜合參考了野火、正點(diǎn)原子、st官方以及網(wǎng)絡(luò)上的一些資料,然后經(jīng)過我自己的思考、嘗試與實(shí)踐,從而整理出來的。感謝那些愿意在學(xué)習(xí)的路上分享自己知識與經(jīng)驗(yàn)的前輩。
?

二、學(xué)習(xí)筆記

(一)、編程思路和代碼

編程順序,NVIC,EXIT(系統(tǒng)時鐘開啟和連接),中斷服務(wù)函數(shù)

1.初始化GPIO(配置按鍵GPIO為輸入模式)

2.開啟按鍵GPIO的時鐘和SYSCFG的時鐘(很重要,在初始化GPIO開時鐘后弄)

同時將IO口線連接到中斷線上面來

GPIO_InitTypeDef GPIO_InitStructure; /*開啟按鍵GPIO口的時鐘*/RCC_AHB1PeriphClockCmd(KEY1_INT_GPIO_CLK|KEY2_INT_GPIO_CLK ,ENABLE);/* 使能 SYSCFG 時鐘 ,使用GPIO外部中斷時必須使能SYSCFG時鐘*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);/* 選擇按鍵1的引腳 */ GPIO_InitStructure.GPIO_Pin = KEY1_INT_GPIO_PIN;/* 設(shè)置引腳為輸入模式 */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; /* 設(shè)置引腳不上拉也不下拉 */GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;/* 使用上面的結(jié)構(gòu)體初始化按鍵 */GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStructure);

3.將按鍵GPIO連接到EXTI源輸入

/* 連接 EXTI 中斷源 到key1引腳 */SYSCFG_EXTILineConfig(KEY1_INT_EXTI_PORTSOURCE,KEY1_INT_EXTI_PINSOURCE);

4配置NVIC(嵌套向量中斷控制器)

不可屏蔽中斷和外部中斷由它處理,SYSTICK不是由他處理。

1.搶占優(yōu)先級和響應(yīng)優(yōu)先級

搶占優(yōu)先比較搶占優(yōu)先級,當(dāng)搶占優(yōu)先級相同時,比較響應(yīng)優(yōu)先級,兩者編號越小,表明優(yōu)先級越高,搶占優(yōu)先級相同時,則不能被對方打斷,但會依據(jù)響應(yīng)優(yōu)先級來判斷優(yōu)先相應(yīng)。

2.NVIC 的優(yōu)先級組

第0組:所有4位用于指定響應(yīng)優(yōu)先級

16種相應(yīng)優(yōu)先級
第1組:最高1位用于指定搶占式優(yōu)先級,最低3位用于指定響 應(yīng)優(yōu)先級

2種搶斷優(yōu)先級(0、1),8種響應(yīng)優(yōu)先級
第2組:最高2位用于指定搶占式優(yōu)先級,最低2位用于指定響應(yīng)優(yōu)先級
第3組:最高3位用于指定搶占式優(yōu)先級,最低1位用于指定響應(yīng)優(yōu)先級
第四組:所有4位用于指定搶占式優(yōu)先級

3.其中優(yōu)先級分組寫在主函數(shù)中,NVIC配置寫在一個函數(shù)中(中斷源,搶占優(yōu)先級和響應(yīng)優(yōu)先級,使能中斷)

NVIC_InitTypeDef NVIC_InitStructure;/* 配置NVIC為優(yōu)先級組1 */NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);/* 配置中斷源:按鍵1 */NVIC_InitStructure.NVIC_IRQChannel = KEY1_INT_EXTI_IRQ;/* 配置搶占優(yōu)先級:1 */NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;/* 配置子優(yōu)先級:1 */NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;/* 使能中斷通道 */NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* 配置中斷源:按鍵2,其他使用上面相關(guān)配置 */ NVIC_InitStructure.NVIC_IRQChannel = KEY2_INT_EXTI_IRQ;NVIC_Init(&NVIC_InitStructure);

5.配置按鍵EXTI中斷線

1.中斷事件線,用于選擇哪個位

2.中斷模式,產(chǎn)生中斷或產(chǎn)生事件

EXTI_InitTypeDef EXTI_InitStructure;/* 選擇 EXTI 中斷源 */EXTI_InitStructure.EXTI_Line = KEY1_INT_EXTI_LINE;/* 中斷模式 */EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;/* 下降沿觸發(fā) */EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; /* 使能中斷/事件線 */EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);

6編寫EXTI中斷服務(wù)函數(shù)

void KEY1_IRQHandler(void) {//確保是否產(chǎn)生了EXTI Line中斷if(EXTI_GetITStatus(KEY1_INT_EXTI_LINE) != RESET) {// LED1 取反 LED1_TOGGLE;//清除中斷標(biāo)志位EXTI_ClearITPendingBit(KEY1_INT_EXTI_LINE); } }void KEY2_IRQHandler(void) {//確保是否產(chǎn)生了EXTI Line中斷if(EXTI_GetITStatus(KEY2_INT_EXTI_LINE) != RESET) {// LED2 取反 LED2_TOGGLE;//清除中斷標(biāo)志位EXTI_ClearITPendingBit(KEY2_INT_EXTI_LINE); } }

總結(jié)

以上是生活随笔為你收集整理的STM32F407野火霸天虎系列笔记(四)EXTI的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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