什么是中斷?中斷就是打斷程序執(zhí)行順序的外部輸入 EXTI是專門控制外部中斷/事件的控制器 簡單來講 EXTI有20根外部輸入線, 這20根外部中斷線可以選擇特定的一個輸入源給EXTI輸入中斷信號(見下圖) EXTI能設(shè)定是中斷還是事件 EXTI能控制是上升沿還是下降沿觸發(fā) 并能使能/失能 關(guān)于20根輸入線: 使用EXTI要先用RCC初始化 APB2上的AFIO 我們可以調(diào)用進行初始化 這里我們看到一個結(jié)構(gòu)體: EXTI_InitTypeDef EXTI_InitTypeDef的第一個參數(shù): EXTI_Line EXTI_InitTypeDef的第二個參數(shù): EXTI_Mode EXTI_InitTypeDef的第三個參數(shù):EXTI_Trigger EXTI_InitTypeDef的第四個參數(shù):EXTI_LineCmd 可選 ENABLE / DISABLE 上面的函數(shù)EXTI_Init()針對特定中斷線進行了初始化 四. 按鍵中斷全過程 開GPIO時鐘 初始化GPIO 將GPIO管腳與EXTI建立輸入線 開EXTI時鐘 初始化EXTI 選擇的NVIC的解析政策 NVIC_PriorityGroupConfig() 初始化NVIC來接收EXTI傳來的中斷 寫中斷服務(wù)函數(shù)(在服務(wù)函數(shù)中要重置中斷) 寫main函數(shù)調(diào)用初始化函數(shù) 接下來是一個完整的按鍵中斷的例子 建立一個psb_exti.h 和一個psb_exti.c 存放exti相關(guān)的內(nèi)容 psb_exti.h #ifndef __PSB_EXTI_H#define __PSB_EXTI_H#include 'stm32f10x.h'#define K1_GPIO GPIOA#define K1_GPIO_Pin GPIO_Pin_0#define K1_GPIO_CLK RCC_APB2Periph_GPIOA#define K1_EXTI_PortSource GPIO_PortSourceGPIOA#define K1_EXTI_PinSource GPIO_PinSource0#define K1_EXTI_Line EXTI_Line0void KEY1_IRQ_Init(void);#endif /*__PSB_EXTI_H*/ psb_exti.c. #include 'psb_exti.h'static void EXTI_NVIC_Config(void) //加static是為了此方法限定本文件使用{ NVIC_InitTypeDef NVIC_InitStruct; //創(chuàng)建結(jié)構(gòu)體 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //優(yōu)先級分組政策選擇中斷組1 NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn; //中斷源選擇: EXTI的0號線中斷 NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;//主優(yōu)先級 NVIC_InitStruct.NVIC_IRQChannelSubPriority = 7;//次優(yōu)先級 NVIC_InitStruct.NVIC_IRQChannelCmd =ENABLE; //使能 NVIC_Init(&NVIC_InitStruct); //初始化}void KEY1_IRQ_Init(void){ GPIO_InitTypeDef GPIO_InitStruct_K1; //創(chuàng)建一個GPIO_InitTypeDef類型的數(shù)據(jù) EXTI_InitTypeDef EXTI_InitStruct; //創(chuàng)建一個EXTI_InitTypeDef類型的數(shù)據(jù) //初始化EXTI的中斷優(yōu)先級 EXTI_NVIC_Config(); //GPIO開時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //開啟GPIO時鐘 //初始化GPIO GPIO_InitStruct_K1.GPIO_Pin = K1_GPIO_Pin; //給這個數(shù)據(jù)的參數(shù)賦值 GPIO_InitStruct_K1.GPIO_Mode = GPIO_Mode_IN_FLOATING;//給這個數(shù)據(jù)的參數(shù)賦值 GPIO_InitStruct_K1.GPIO_Speed = GPIO_Speed_50MHz;//給這個數(shù)據(jù)的參數(shù)賦值 GPIO_Init(K1_GPIO, &GPIO_InitStruct_K1);//初始化外設(shè)GPIOx寄存器 //將KEY1的GPIO管腳與EXTI連起來 GPIO_EXTILineConfig(K1_EXTI_PortSource, K1_EXTI_PinSource);// 將KEY1的GPIO管腳與EXTI連起來 //開啟EXTI時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //初始化EXTI的輸入線 EXTI_InitStruct.EXTI_Line = K1_EXTI_Line; EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_Init(& EXTI_InitStruct);} stm32f10x_it.c void EXTI0_IRQHandler(void){ if(EXTI_GetITStatus(EXTI_Line0) != RESET) { LED_G_TOOGLE } EXTI_ClearITPendingBit(EXTI_Line0);} main.c一. 外部中斷/事件控制器 (EXTI)
什么是事件?事件是外部輸入會觸發(fā)的事件.比如喚醒二. 初始化 EXTI控制器 //EXTI_Init()
//開啟EXTI時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
三. GPIO引腳配置 GPIO_EXTILineConfig()
如何選擇特定的GPIO引腳作為中斷線輸入呢?
上一篇:ESP32玩轉(zhuǎn)MicroPython(一) 燒入固件, 初識
下一篇:意法半導體發(fā)布STM32MP23高性價比MPU, 并延長對OpenSTLinux版本的支持期限
推薦閱讀最新更新時間:2025-06-09 09:27







設(shè)計資源 培訓 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導體STM32MP23x:突破成本限制的工業(yè)AI應(yīng)用核心
- 意法半導體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- LT1172HVCT、5V/1.25A 正降壓轉(zhuǎn)換器的典型應(yīng)用
- 【訓練營】四條腿機器狗
- SG3525A 推挽式脈寬調(diào)制器控制電路的典型應(yīng)用
- LT1108CS8-12掌上電腦邏輯電源微功率DC/DC轉(zhuǎn)換器典型應(yīng)用電路
- AM2M-1515DH30-NZ ±15 Vout、2W 雙路輸出 DC-DC 轉(zhuǎn)換器的典型應(yīng)用
- LTC2945HMS 具有高達 200V 浪涌保護的堅固型 4V 至 70V 高壓側(cè)功率監(jiān)視器的典型應(yīng)用
- 常用MCU全能燒錄器
- 【航順訓練營】國產(chǎn)航順MCU開發(fā)學習板
- LTC3624EMSE-25 5V 輸出電壓、2A 同步降壓型穩(wěn)壓器的典型應(yīng)用,具有 1MHz、突發(fā)模式操作
- 具有備用電源監(jiān)控功能的 LTC4420IMSE 18V 雙輸入微電源路徑優(yōu)先器的典型應(yīng)用電路
- 51單片機-再次熟悉串口
- ST 發(fā)布8x8區(qū)測距飛行時間傳感器,賦能應(yīng)用創(chuàng)新
- 英國Pickering公司推出新款PXI/PXIe 5A功率繼電器模塊
- 南大研究突破二維半導體單晶制備與異質(zhì)集成關(guān)鍵技術(shù)
- 51單片機教程:數(shù)碼管動態(tài)顯示(0~99999999)74hc138驅(qū)動
- 瑞薩電子32位RX微控制器產(chǎn)品家族交付第10億顆芯片
- 51單片機入門 - 學習筆記
- 萬用表歐姆檔的使用
- 遠程監(jiān)控車輛工具TraceCloud Pro CAN
- 用變頻器的電機為什么發(fā)抖?變頻器帶動電機運行時產(chǎn)生抖動怎么處理?
- 潤石科技推出RS3215-Q1系列低壓差線性穩(wěn)壓器
- CANape 23開啟智能測試新時代(下)
- 軟件定義汽車電源管理設(shè)計:NXP的PMIC選型攻略解析
- 深度測評時空壺X1同聲傳譯器:全球最先進AI同傳設(shè)備的非凡實力
- 作為領(lǐng)先的垂直整合制造商(IDM),英飛凌在 300mm氮化鎵生產(chǎn)路線圖方面取得突破
- 鐵威馬F6-424 Max:六盤位擴容+國產(chǎn)系統(tǒng)兼容,小白也能玩轉(zhuǎn)NAS
- 開關(guān)電源給鉛酸電池恒流恒壓充電的電流跳動問題解析
- 自動駕駛中的激光雷達是否會傷害攝像頭?
- 觸覺技術(shù)助力企業(yè)在激烈的市場競爭中脫穎而出
- 芯片中的串擾噪聲有幾類
- “智同行 數(shù)未來” 偉世通杯自動駕駛算法競賽開啟
- 曠視 創(chuàng)單倉機器人集群作業(yè)紀錄
- Innodisk宜鼎國際發(fā)布耐高溫800°C固態(tài)硬盤
- 國民技術(shù)與海爾、有方科技三方合作,讓工業(yè)互聯(lián)網(wǎng)更安全
- 高云半導體推出最新安全FPGA系列產(chǎn)品
- 谷歌CEO和微軟總裁意見不一,人臉識別是否該禁止?
- 海信否認退出OLED,并與東芝合作加大對該領(lǐng)域的研發(fā)力度
- 英國諾丁漢市將試驗無線充電的出租車
- 美總統(tǒng)候選人:計劃十年內(nèi)全美只售電動汽車
- 全球汽車面臨巨大變革,戴姆勒正大力規(guī)劃電動汽車