娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年01月09日(星期四)

正在發生

2019年01月09日 | STM32學習筆記一一外部中斷

發布者:嶺南布衣 來源: eefocus關鍵字:STM32  外部中斷 手機看文章 掃描二維碼
隨時隨地手機看文章

1.STM32 外部中斷簡介


STM32 的每個 IO 都可以作為外部中斷的中斷輸入口。 STM32F103中斷控制器支持 19 個外部中斷/事件請求。每個中斷設有狀態位,每個中斷/事件都有獨立的觸發和屏蔽設置。代碼主要分布在固件庫的 stm32f10x_exti.h 和 stm32f10x_exti.c 文件。


STM32F103的 19 個外部中斷為:


線 0~15:對應外部 IO 口的輸入中斷。


線 16:連接到 PVD 輸出。


線 17:連接到 RTC 鬧鐘事件。


線 18:連接到 USB 喚醒事件


觸發方式:STM32 的外部中斷是通過邊沿來觸發的,不支持電平觸發。


2.外部中斷分組


STM32 的每一個GPIO都能配置成一個外部中斷觸發源,STM32 通過根據引腳的序號不同將眾多中斷觸發源分成不同的組,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0為第一組,那么依此類推,我們能得出一共有16 組,STM32 規定,每一組中同時只能有一個中斷觸發源工作,那么,最多工作的也就是16個外部中斷。


這里寫圖片描述


3.中斷的初始化函數 EXTI_Init()


void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct); 

范例:


EXTI_InitTypeDef EXTI_InitStructure;

EXTI_InitStructure.EXTI_Line=EXTI_Line4;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure); //根據 EXTI_InitStruct 中指定的參數初始化外設 EXTI 寄存器


結構體 EXTI_InitTypeDef 的成員變量:


typedef struct

{

uint32_t EXTI_Line;//中斷線的標號,取值范圍為EXTI_Line0~EXTI_Line15


EXTIMode_TypeDef EXTI_Mode;//中斷模式,可選為中斷 EXTI_Mode_Interrupt 和事件 EXTI_Mode_Event。


EXTITrigger_TypeDef EXTI_Trigger;//觸發方式,可以是下降沿觸發 EXTI_Trigger_Falling,上升沿觸發 EXTI_Trigger_Rising,或者任意電平(上升沿和下降沿)觸發EXTI_Trigger_Rising_Falling


FunctionalState EXTI_LineCmd;//使能中斷線

}EXTI_InitTypeDef;


4.設置 NVIC 中斷優先級 

范例:


NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //使能按鍵外部中斷通道

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //搶占優先級 2,

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //子優先級 2

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中斷通道

NVIC_Init(&NVIC_InitStructure); //中斷優先級分組初始化


5.中斷服務函數


中斷服務函數的名字是在 MDK 中事先有定義的, STM32 的 IO 口外部中斷函數只有 6 個。


IO 口外部中斷函數 中斷線

EXTI0_IRQHandler 中斷線 0

EXTI1_IRQHandler 中斷線 1

EXTI2_IRQHandler 中斷線 2

EXTI3_IRQHandler 中斷線 3

EXTI4_IRQHandler 中斷線 4

EXTI9_5_IRQHandler 中斷線 5-9

EXTI15_10_IRQHandler 中斷線 10-15

注:


在編寫中斷服務函數的時候會經常使用到兩個函數,第一個函數是判斷某個中斷線上的中斷是否發生(標志位是否置位): 

ITStatus EXTI_GetITStatus(uint32_t EXTI_Line); 

這個函數一般使用在中斷服務函數的開頭判斷中斷是否發生。


另一個函數是清除某個中斷線上的中斷標志位: 

void EXTI_ClearITPendingBit(uint32_t EXTI_Line); 

這個函數一般應用在中斷服務函數結束之前,清除中斷標志位。


6.使用 IO 口外部中斷的一般步驟


1)初始化IO口為輸入。


設置作為外部中斷輸入的IO口的狀態,可以設置為上拉 / 下拉輸入 / 浮空輸入,但浮空的時候外部一定要帶上拉,或者下拉電阻。否則可能導致中斷不停的觸發。在干擾較大的地方,就算使用了上拉/下拉,也建議使用外部上拉/下拉電阻,這樣可以一定程度防止外部干擾帶來的影響。


2)開啟IO口復用時鐘,設置IO口與中斷線的映射關系。


STM32的IO口與中斷線的對應關系需要配置外部中斷配置寄存器EXTICR,這樣我們要先開啟復用時鐘,然后配置IO口與中斷線的對應關系。才能把外部中斷與中斷線連接起來。


3)開啟與該IO口相對的線上中斷/事件,設置觸發條件。


這一步,我們要配置中斷產生的條件,STM32可以配置成上升沿觸發,下降沿觸發,或者任意電平變化觸發,但是不能配置成高電平觸發和低電平觸發。這里根據自己的實際情況來配置。同時要開啟中斷線上的中斷,這里需要注意的是:如果使用外部中斷,并設置該中斷的EMR位的話,會引起軟件仿真不能跳到中斷,而硬件上是可以的。而不設置EMR,軟件仿真就可以進入中斷服務函數,并且硬件上也是可以的。建議不要配置EMR位。


4)配置中斷分組(NVIC),并使能中斷。


這一步,我們就是配置中斷的分組,以及使能,對STM32的中斷來說,只有配置了NVIC的設置,并開啟才能被執行,否則是不會執行到中斷服務函數里面去的。


5)編寫中斷服務函數。


這是中斷設置的最后一步,中斷服務函數,是必不可少的,如果在代碼里面開啟了中斷,但是沒編寫中斷服務函數,就可能引起硬件錯誤,從而導致程序崩潰!所以在開啟了某個中斷后,一定要記得為該中斷編寫服務函數。在中斷服務函數里面編寫你要執行的中斷后的操作。


7.例程分析:


(1)外部中斷初始化函數


void EXTIX_Init(void)

{


      EXTI_InitTypeDef EXTI_InitStructure;

      NVIC_InitTypeDef NVIC_InitStructure;


      RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//外部中斷,需要使能AFIO時鐘


      KEY_Init();//初始化按鍵對應io模式


    //GPIOC.5 中斷線以及中斷初始化配置

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);


    EXTI_InitStructure.EXTI_Line=EXTI_Line5;

    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; 

    EXTI_InitStructure.EXTI_Trigger =        EXTI_Trigger_Falling;//下降沿觸發

    EXTI_InitStructure.EXTI_LineCmd = ENABLE;

    EXTI_Init(&EXTI_InitStructure);  //根據 EXTI_InitStruct中指定的參數初始化外設EXTI寄存器


    NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;            //使能按鍵所在的外部中斷通道

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;    //搶占優先級2 

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;                   //子優先級1

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                             //使能外部中斷通道

    NVIC_Init(&NVIC_InitStructure);       //根據NVIC_InitStruct中指定的參數初始化外設NVIC寄存器 

}


(2) 中斷服務函數


void EXTI0_IRQHandler(void)

{

  delay_ms(10);    //消抖

    if(WK_UP==1)

    {     

        LED0=!LED0;

        LED1=!LED1; 

    }

    EXTI_ClearITPendingBit(EXTI_Line0);  //清除EXTI0線路掛起位

}


參考:


1.STM32-外部中斷實驗


2.STM32-外部中斷學習筆記


3.STM32之EXTI——外部中斷


關鍵字:STM32  外部中斷 引用地址:STM32學習筆記一一外部中斷

上一篇:STM32學習筆記一一時鐘系統
下一篇:STM32學習筆記一一GPIO

推薦閱讀

1967年創辦、每年吸引將近20萬人前來的國際消費電子展(CES)即將于1月9日至1月12日在美國拉斯維加斯舉行。?如今,CES展已經成為了全球許多科技愛好者的“朝拜圣地”。盡管不少人預計今年展出產品突破和改進的幅度會比較小,不過也有人認為今年將是各大參展商“兌現承諾的一年”。?從電動汽車到虛擬現實,從人工智能到“中國制造”,今年的展會又有哪些...
日前,海克斯康正式宣布完成對設備校準方案提供商Etalon的收購。Etalon公司專注于提供制造行業校準方案,其方案可持續監測并實現機械工具、測量機、機器人以及結構的補償,確保制造部件的尺寸精度。Etalon的加入進一步加強了海克斯康構建自主連接智能工廠的實力。 Etalon成立于2004年,總部位于德國的布倫瑞克,專注于生產與計量技術,現作為海克斯康制造...
汽車前照燈隨動轉向系統(AFS)結合汽車轉向等信息實時控制車燈方向,減少盲區。該系統中步進電機的驅動芯片必不可少,本文將簡單介紹 AFS 系統的實現,推薦兩款能同時驅動兩個步進電機的低邊驅動芯片NCV7240 和 NCV7754。 一、會動的前照燈隨著技術的發展以及人們對駕駛安全的追求,汽車前照燈隨動轉向系統(AFS)也越來多地用在各個品牌的車身上。...
集微網消息 1月8日,安捷利美維電子副董事長孔令文在廈門半導體投資集團2021投資人年會上發表“中國封裝基板產業發展現狀、展望及骨干企業”的主題演講。孔令文稱,目前,集成電路市場規模在于4000多億美金,年均增速6.3%左右,封裝基板的市場規模占PCB市場規模的1/7,也就是說,如果PCB市場規模為700億美金,那么封裝基板是100億美金。孔令文表示,“封...

史海拾趣

問答坊 | AI 解惑

求助 16F74的資料和編程

16F74   先謝過各位高手…

查看全部問答∨

影響EMC的因素

電壓——電源電壓越高,意味著電壓振幅越大而發射就更多,而低電源電壓影響敏感度。 頻率——高頻產生更多的發射,周期性信號產生更多的發射。在高頻數字系統中,當器件開關時產生電流尖峰信號;在模擬系統中,當負載電流變化時產生電流尖峰信號。 ...…

查看全部問答∨

這里有朋友搞vxworks操作系統的嘛?

請問這里有朋友搞vxworks操作系統的嘛?…

查看全部問答∨

開啟物聯網時代--中國首顆手機傳感芯片推出

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 編輯 12月7日消息,上海芯片企業深迪半導體宣布,國內第一款具有中國自主知識產權的商用MEMS陀螺儀誕生,這是國內首顆手機傳感器芯片,將改變我國手機MEMS陀螺儀完全從國外進口的歷史。 中 ...…

查看全部問答∨

基于VC2005+PPC2003下,DC繪制圖形雙緩存繪制

我在VC2005中創建了基于單文檔的MFC工程,實現工程為讀取地圖數據,然后通過DC繪制到屏幕中,但在拖動地圖的時候會出現刷屏現象,即閃得很厲害。然后,在網上了解到可以通過使用雙緩存來解決該問題,實現代碼如下:       &nb ...…

查看全部問答∨

WinCE鍵盤鉤子問題

   我要用鉤子來截取WINCE軟鍵盤的消息,參考網上一些其他資料,用如下方法來設置鉤子,可是始終不成功,請教各位!   /////////////  初始化部分  ///////////////////////////      &n ...…

查看全部問答∨

單片機和嵌入式

我是從軟件轉到嵌入式的,最近在學習S3C2440(ARM9T),想自己寫一個類似Uboot的程序,于是開始看芯片技術文檔。發現看不懂,閱讀uboot的原代碼,那些芯片的配置也已經讓我焦頭爛額了,現在是舉步維艱。還請高人給指條路。先謝過了。…

查看全部問答∨

應急燈PCB設計一

 這是我用熱轉印法制作的應急燈燈座,經過驗證可以適合做公共母板,接口已經定義和留出,結果很理想,由于是精確建模,所以最后扣合在一起的時候很精準,O(∩_∩)O哈哈~,大家先看圖吧   [ 本帖最后由 solidwants 于 2010-10-3 20:26 ...…

查看全部問答∨

交叉網線、交叉串口線和非交叉的有什么區別???

交叉網線、交叉串口線和非交叉的有什么區別,學習網線下載時看到交叉網線,和非交叉的,但是不知道有什么區別。。還有交叉串口線。。。,求解釋。。。…

查看全部問答∨

[北京急招】DSP軟件開發

qq號碼:810674408 郵箱:angjing2006@163.com msn:angjing2006@msn.cn 研發中心 系統產品部DSP軟件工程師 北京 工作職責: 1、負責寬帶無線接入系統無線系統產品物理層算法的驗證及實現; 2、負責無線側基站產品物理層軟件的開發及維護。 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 黄陵县| 哈巴河县| 柳州市| 蓬安县| 循化| 英超| 黎城县| 于田县| 上杭县| 尼勒克县| 万山特区| 巴彦县| 资源县| 揭阳市| 锡林郭勒盟| 海丰县| 卢龙县| 闽侯县| 綦江县| 卓尼县| 集贤县| 阳信县| 平果县| 宝兴县| 桐柏县| 东山县| 漳浦县| 巴东县| 隆化县| 白玉县| 卓尼县| 盘山县| 万山特区| 富川| 波密县| 福州市| 哈尔滨市| 江孜县| 呈贡县| 镇赉县| 贺州市|