国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

STM32一文通(6) 外部中斷

發(fā)布者:SparkStar22最新更新時間:2025-04-07 來源: jianshu關(guān)鍵字:STM32  外部中斷  事件控制器 手機看文章 掃描二維碼
隨時隨地手機看文章

一. 外部中斷/事件控制器 (EXTI)

什么是中斷?中斷就是打斷程序執(zhí)行順序的外部輸入
什么是事件?事件是外部輸入會觸發(fā)的事件.比如喚醒

EXTI是專門控制外部中斷/事件的控制器

簡單來講

  • EXTI有20根外部輸入線, 這20根外部中斷線可以選擇特定的一個輸入源給EXTI輸入中斷信號(見下圖)

  • EXTI能設(shè)定是中斷還是事件

  • EXTI能控制是上升沿還是下降沿觸發(fā)

  • 并能使能/失能

關(guān)于20根輸入線:

二. 初始化 EXTI控制器    //EXTI_Init()

使用EXTI要先用RCC初始化 APB2上的AFIO

    //開啟EXTI時鐘
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

我們可以調(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

三. GPIO引腳配置  GPIO_EXTILineConfig()

上面的函數(shù)EXTI_Init()針對特定中斷線進行了初始化
如何選擇特定的GPIO引腳作為中斷線輸入呢?

四. 按鍵中斷全過程

開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

關(guān)鍵字:STM32  外部中斷  事件控制器 引用地址:STM32一文通(6) 外部中斷

上一篇:ESP32玩轉(zhuǎn)MicroPython(一) 燒入固件, 初識
下一篇:意法半導體發(fā)布STM32MP23高性價比MPU, 并延長對OpenSTLinux版本的支持期限

推薦閱讀最新更新時間:2025-06-09 09:27

再造STM32---第十五部分:EXTI外部中斷/事件控制器
本章參考資料:《STM32F4xx 中文參考手冊》系統(tǒng)配置控制器以及中斷和事件章節(jié)。上一章節(jié)我們已經(jīng)詳細介紹了 NVIC,對 STM32F4xx 中斷管理系統(tǒng)有個全局的了解,我們這章的內(nèi)容是 NVIC 的實例應(yīng)用,也是 STM32F4xx 控制器非常重要的一個資源。 學習本章時,配合《STM32F4xx 中文參考手冊》系統(tǒng)配置控制器以及中斷和事件章節(jié)一起閱讀,效果會更佳,特別是涉及到寄存器說明的部分。 特別說明,本書內(nèi)容是以 STM32F42xxx 系列控制器資源講解。 15.1 EXTI 簡介: 外部中斷/事件控制器(EXTI)管理了控制器的 23 個中斷/事件線。每個中斷/事件線都對應(yīng)
[單片機]
再造STM32---第十五部分:<font color='red'>EXTI</font>—<font color='red'>外部中斷</font>/<font color='red'>事件</font><font color='red'>控制器</font>
基于STM32CubeIDE軟件實現(xiàn)的STM32外部中斷實例
本文用STM32CubeIDE軟件實現(xiàn)STM32外部中斷實例。 新建工程 “File”-“New”-“STM32 Project”。 輸入芯片型號STM32F103ZE。 選擇相應(yīng)封裝,下一步。 填寫項目名,選擇工程位置,下一步。 配置時鐘、調(diào)試模式 選擇高速外部時鐘。 HCLK總線時鐘處輸入72,回車,配置使用最高時鐘頻率。 調(diào)試模式選擇串行,方便下載程序。 配置管腳外設(shè) 本實例中用到了LED1與KEY_LEFT,找到相應(yīng)電路圖。 可見LED1對應(yīng)PC0管腳,低電平點亮。按鍵K1對應(yīng)PE2管腳,低電平有效。 PC0配置為GPIO_Output,GPIO輸出模式 PE2配置為GPIO_EX
[單片機]
基于STM32CubeIDE軟件實現(xiàn)的<font color='red'>STM32</font><font color='red'>外部中斷</font>實例
stm32 外部中斷 按鍵的誤觸發(fā)
最近在調(diào)試按鍵作為外部中斷exti進行觸發(fā)動作,發(fā)現(xiàn)每次按鍵按下和按鍵抬起都會多次進入中斷函數(shù),造成程序不穩(wěn)定,經(jīng)過反復調(diào)試和查閱資料,最后終于已經(jīng)把這個問題解決,現(xiàn)在總結(jié)一下: 1、EXTI重復配置兩次導致誤觸發(fā)中斷的問題 如果重復兩次配置EXTI的話,由于第一次已經(jīng)打開中斷,當進行第二次配置中斷的時候,會把中斷引腳首先配置成默認引腳,然后在配置成目的引腳,這樣由于默認引腳是低電平,所以在切換的過程中就會進入一次中斷?。【唧w請參見:http://bbs.elecfans.com/jishu_942011_1_1.html 2、STM32F401 外部中斷誤觸發(fā)問題 現(xiàn)象:調(diào)試STM32F411低功耗的時候,使用的
[單片機]
STM32外部中斷配置方法講解
01 單片機外部中斷簡介 所謂外部中斷,就是通過外部信號所引起的中斷,如單片機引腳上的電平變化(高電平、低電平)、邊沿變化(上升沿、下降沿)等。51單片機有5個中斷源,其中有兩個是外部中斷,分別為INT0和INT1,INT0被分配在P3.2引腳,INT1被分配在P3.2引腳,也即是說如果使用51單片機的外部中斷0,則必須將信號接在P3.2上,否則無效。 02 舉例說明什么是中斷 單片機在執(zhí)行程序時有兩種方式: 查詢方式 中斷方式 所謂查詢方式就是單片機一遍一遍的掃描,查看所監(jiān)視的目標有沒有發(fā)生變化,是一種主動式的監(jiān)視方法,用一個成語可以很客觀的描述:守株待兔。 所謂中斷方式就是單片機不主動去監(jiān)視
[單片機]
<font color='red'>STM32</font><font color='red'>外部中斷</font>配置方法講解
AT89S51單片機擴充外部中斷源系統(tǒng)的設(shè)計
AT89S51為用戶提供兩個外部中斷請求輸入端INT0(的反)和INT1(的反),實際的應(yīng)用系統(tǒng)中,兩個外部中斷請求源往往不夠用,需對外部中斷源進行擴充。下面介紹一種擴充外部中斷源的方法。 如下圖所示,若系統(tǒng)中有5個外部中斷請求源IR0~IR4,它們均為高電平請求有效,這時可按中斷請求的輕重緩急進行排隊,把其中最高級別的中斷請求源IR0直接接到AT89S51的一個外部中斷請求源IR0輸入端INT0,其余的4個中斷請求源IR1~IR4按下圖所示的方法通過各自的OC門(集電極開路門)連到AT89S51的另一個外中斷源輸入端INT1,同時還連到P1口的P1.0~P1.3腳,供AT89S51查詢。各外部中斷請求源的中斷請求由外部設(shè)備的
[單片機]
AT89S51單片機擴充<font color='red'>外部中斷</font>源系統(tǒng)的設(shè)計
關(guān)于STM32F407的NVIC、EXTI相關(guān)入門知識
NVIC與EXTI關(guān)系 EXTI是ST公司在其STM32產(chǎn)品上擴展的外中斷控制。它負責管理映射到GPIO引腳上的外中斷和片內(nèi)幾個集成外設(shè)的中斷(PVD,RTC alarm,USB wakeup,ethernet wakeup),以及軟件中斷。其輸出最終被映射到NVIC的相應(yīng)通道。因此,配置EXTI中斷的過程必然包含對NVIC的配置,例如下面配置EXTI0的過程,就要首先配置EXTI控制器(使能相應(yīng)的中斷線,選擇中斷/事件模式,觸發(fā)邊沿極性),然后再配置NVIC控制器(EXTI0映射在NVIC上的通道號,中斷優(yōu)先級,中斷屏蔽狀態(tài)):------來源于STM32中EXTI(外部中斷)和NVIC(嵌套向量中斷)的關(guān)系 - 21ic電子網(wǎng)
[單片機]
關(guān)于STM32F407的NVIC、<font color='red'>EXTI</font>相關(guān)入門知識
51單片機——外部中斷
一、外部中斷 1.1 中斷 關(guān)于中斷的概念在上一篇博客中已經(jīng)提到了。(傳送門:51單片機入門教程(5)——定時器中斷) 中斷是指計算機運行過程中,出現(xiàn)某些意外情況需主機干預時,機器能自動停止正在運行的程序并轉(zhuǎn)入處理新情況的程序,處理完畢后又返回原被暫停的程序繼續(xù)運行。 51單片機的中斷源優(yōu)先級與向量號如下表: 1.2 外部中斷 除了定時器中斷外,51單片機還有兩個外部中斷源——外部中斷0、外部中斷1。分別由單片機的12號引腳(INT0/P3.2)、13號(INT1/P3.3)引腳的低電平/負跳變觸發(fā)。 和定時器中斷一樣,要使用這兩個外部中斷,首先要進行初始化操作,即寫入相關(guān)的寄存器。初始化外部中斷需要寫入下面兩
[單片機]
51單片機——<font color='red'>外部中斷</font>
Tiny4412之外部中斷
一:外部中斷   在之前我們學習按鍵驅(qū)動的時候,我們檢測按鍵有沒有按下是通過輪循的方式(也就是我們說的死循環(huán)),這樣雖然可以檢測實現(xiàn)按鍵,但太浪費系統(tǒng)資源了,不論我們按鍵中斷有沒有發(fā)生,cpu都要一直進行檢測;這樣操作系統(tǒng)就不能做其他事情了,因此這樣肯定是不可取得,因此我們可以通過外部中斷解決它; 要處理一個中斷,我們需要了解模式,而了解模式,有需要了解mmu;在學習這些之后我們就可以返回來處理我們按鍵驅(qū)動的時候留下的問題了; 通過之前的按前驅(qū)動我們已經(jīng)了解了按前驅(qū)動在板子上的位置以及按鍵的電路圖以及他的引腳作用,下面我們就如何實現(xiàn)這個程序的步驟: 我們知道控制按鍵的寄存器為: 外部中斷對應(yīng)的是: 0xf =
[單片機]
Tiny4412之<font color='red'>外部中斷</font>
小廣播
設(shè)計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved