0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F407 外部中斷配置步驟

DS小龍哥-嵌入式技術(shù) ? 來(lái)源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-07-06 14:31 ? 次閱讀

介紹STM32F407外部中斷配置步驟,以按鍵為例,實(shí)現(xiàn)外部中斷配置,使用按鍵觸發(fā)中斷進(jìn)行LED燈控制。

【1】外部中斷相關(guān)知識(shí)介紹

img

CM4 內(nèi)核支持 256 個(gè)中斷,其中包含了 16 個(gè)內(nèi)核中斷和 240 個(gè)外部中斷,并且具有 256級(jí)的可編程中斷設(shè)置。但 STM32F4 并沒(méi)有使用 CM4 內(nèi)核的全部東西,而是只用了它的一部分。

STM32F40xx/STM32F41xx 總共有 92 個(gè)中斷, STM32F42xx/STM32F43xx 則總共有 96 個(gè)中斷,以下僅以 STM32F40xx/41xx 為例講解。

STM32F40xx/STM32F41xx 的 92 個(gè)中斷里面, 包括 10 個(gè)內(nèi)核中斷和 82 個(gè)可屏蔽中斷,具有 16 級(jí)可編程的中斷優(yōu)先級(jí), 而我們常用的就是這 82 個(gè)可屏蔽中斷。

img

img

img

【2】外部中斷示例代碼

exti.c代碼

#include "exti.h"
 ?
 /*
 函數(shù)功能:按鍵外部中斷初始化
 硬件連接:
 KEY0 --- >PE4  按下為低電平
 KEY1 --- >PE3  按下為低電平
 KEY2 --- >PE2  按下為低電平
 KEY_UP-- >PA0  按下為高電平
 */
 void KEY_EXTI_Init(void)
 {
 /*1. 開(kāi)啟SYSCFG時(shí)鐘 */
 RCC- >APB2ENR|=1< 14;
 
   /*2. 開(kāi)放來(lái)自線x上的中斷請(qǐng)求*/
   EXTI- >IMR|=1< 0; //中斷線0
   EXTI- >IMR|=1< 2; //中斷線2
   EXTI- >IMR|=1< 3; //中斷線3
   EXTI- >IMR|=1< 4; //中斷線4
 
   /*3. 配置中斷線觸發(fā)邊沿*/
   EXTI- >RTSR|=1< 0; //上升沿
   EXTI- >FTSR|=1< 0; //下降沿
   
 EXTI- >RTSR|=1< 2; //上升沿
   EXTI- >FTSR|=1< 2; //下降沿
  
 EXTI- >RTSR|=1< 3; //上升沿
   EXTI- >FTSR|=1< 3; //下降沿
 
   EXTI- >RTSR|=1< 4; //上升沿
   EXTI- >FTSR|=1< 4; //下降沿
   
   /*4. 配置產(chǎn)生中斷的對(duì)應(yīng)IO口*/
   SYSCFG- >EXTICR[0]&=~(0xf< 0*4);
   SYSCFG- >EXTICR[0]|=0x0< 0*4;
   
 SYSCFG- >EXTICR[0]&=~(0xf< 2*4);
   SYSCFG- >EXTICR[0]|=0x4< 2*4;
 
 SYSCFG- >EXTICR[0]&=~(0xf< 3*4);
   SYSCFG- >EXTICR[0]|=0x4< 3*4;
 
 SYSCFG- >EXTICR[1]&=~(0xf< 0*4);
   SYSCFG- >EXTICR[1]|=0x4< 0*4;
 
   /*5. 配置中斷優(yōu)先級(jí)*/
   SetNVICPriorityGrouping(EXTI0_IRQn,2,2);
 SetNVICPriorityGrouping(EXTI2_IRQn,2,2);
 SetNVICPriorityGrouping(EXTI3_IRQn,2,2);
 SetNVICPriorityGrouping(EXTI4_IRQn,2,2);
 }
 ?
 /*
 功 能:外部中斷線0中斷服務(wù)函數(shù)
 */
 ?
 void EXTI0_IRQHandler(void)
 {
  DelayMs(10);
  if(KEY_UP)
  {
 LED0=!LED0;
 LED1=!LED1;
 printf("KEY_UP\\r\\n");
  }
  EXTI- >PR|=1< 0; //清除中斷標(biāo)志位
 }
 ?
 /*
 功 能:外部中斷線2中斷服務(wù)函數(shù)
 */
 void EXTI2_IRQHandler(void)
 {
  DelayMs(10);
  if(KEY2==0)
  {
 LED0=!LED0;
 LED1=!LED1;
 printf("KEY2\\r\\n");
  }
  EXTI- >PR|=1< 2; //清除中斷標(biāo)志位
 }
 ?
 /*
 功 能:外部中斷線3中斷服務(wù)函數(shù)
 */
 void EXTI3_IRQHandler(void)
 {
  DelayMs(10);
  if(KEY1==0)
  {
 LED0=!LED0;
 LED1=!LED1;
   printf("KEY1\\r\\n");
  }
  EXTI- >PR|=1< 3; //清除中斷標(biāo)志位
 }
 ?
 ?
 /*
 功 能:外部中斷線4中斷服務(wù)函數(shù)
 */
 void EXTI4_IRQHandler(void)
 {
  DelayMs(10);
  if(KEY0==0)
  {
 LED0=!LED0;
 LED1=!LED1;
   printf("KEY0\\r\\n");
  }
  EXTI- >PR|=1< 4; //清除中斷標(biāo)志位
 }
 ?

main.c代碼

#include "stm32f4xx.h" // Device header
 #include "led.h"
 #include "delay.h"
 #include "key.h"
 #include "usart.h"
 #include "sys.h"
 #include "exti.h"
 ?
 ?
 int main(void)
 {
 LED_Init();
 KEY_Init();
 USART1_Init(84,115200);
 KEY_EXTI_Init();
 while(1)
 {
 
 }
 }
 ?

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1592

    瀏覽量

    107997
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1372

    瀏覽量

    40289
  • 外部中斷
    +關(guān)注

    關(guān)注

    1

    文章

    131

    瀏覽量

    15824
  • STM32F407
    +關(guān)注

    關(guān)注

    15

    文章

    187

    瀏覽量

    29454
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F407 GPIO口輸入配置配置步驟

    介紹STM32F407新建寄存器工程流程,介紹輸入模式的配置方式,以按鍵為例完成按鍵輸入檢測(cè)。
    的頭像 發(fā)表于 07-06 14:28 ?2296次閱讀
    <b class='flag-5'>STM32F407</b> GPIO口輸入<b class='flag-5'>配置</b><b class='flag-5'>配置</b><b class='flag-5'>步驟</b>

    STM32F407 串口配置步驟

    介紹STM32F407串口配置步驟,完成串口的數(shù)據(jù)發(fā)送與接收、實(shí)現(xiàn)中斷接收,支持printf重定向。
    的頭像 發(fā)表于 07-06 14:29 ?3136次閱讀
    <b class='flag-5'>STM32F407</b> 串口<b class='flag-5'>配置</b><b class='flag-5'>步驟</b>

    STM32F407 基本定時(shí)器使用

    介紹STM32F407基本定時(shí)器的配置方法,分別介紹輪詢(xún)方式、中斷方式使用定時(shí)器完成定時(shí)。
    的頭像 發(fā)表于 07-06 14:32 ?3332次閱讀
    <b class='flag-5'>STM32F407</b> 基本定時(shí)器使用

    STM32F407的22個(gè)外部中斷

    基礎(chǔ)概念STM32F4 的每個(gè) IO 都可以作為外部中斷中斷輸入口,這點(diǎn)也是 STM32F4 的強(qiáng)大之處。
    發(fā)表于 08-13 09:35

    如何去使用STM32F407外部中斷

    STM32F407外部中斷有哪些呢?STM32F407外部中斷有哪些應(yīng)用?
    發(fā)表于 10-26 06:20

    STM32F407 HAL庫(kù)的按鍵中斷配置步驟有哪些

    STM32F407 HAL庫(kù)的中斷管理是什么?STM32F407 HAL庫(kù)的按鍵中斷配置步驟有哪
    發(fā)表于 11-05 06:03

    有關(guān)STM32F407外部中斷基礎(chǔ)知識(shí)總結(jié)

    STM32F407中斷與事件有何區(qū)別呢?STM32F407外部中斷該怎樣去設(shè)置呢?
    發(fā)表于 11-16 07:13

    STM32F407外部中斷的一般配置步驟有哪些

    STM32F407中斷分為幾個(gè)組呢?STM32F407外部中斷的一般配置
    發(fā)表于 11-16 07:14

    STM32F407 UCOS III實(shí)驗(yàn)

    STM32F407 UCOS III實(shí)驗(yàn),介紹基于STM32F407的UCOSIII實(shí)例,參考下
    發(fā)表于 09-22 14:08 ?82次下載

    STM32CubeMX 配置STM32F407 實(shí)現(xiàn)HAL庫(kù)延時(shí)微妙方案

    STM32CubeMX 配置STM32F407 實(shí)現(xiàn)HAL庫(kù)延時(shí)微妙方案
    發(fā)表于 11-24 20:51 ?20次下載
    <b class='flag-5'>STM32</b>CubeMX <b class='flag-5'>配置</b><b class='flag-5'>STM32F407</b> 實(shí)現(xiàn)HAL庫(kù)延時(shí)微妙方案

    STM32F407的串口UART 基礎(chǔ)配置STM32CubeMX

    STM32F407的串口UART 基礎(chǔ)配置STM32CubeMX
    發(fā)表于 11-29 16:06 ?55次下載
    <b class='flag-5'>STM32F407</b>的串口UART 基礎(chǔ)<b class='flag-5'>配置</b><b class='flag-5'>STM32</b>CubeMX

    STM32F407學(xué)習(xí)記錄---外部中斷實(shí)驗(yàn)

    STM32F407學(xué)習(xí)記錄---外部中斷概述STM32F4外部中斷簡(jiǎn)介硬件設(shè)計(jì)軟件設(shè)計(jì)概述將
    發(fā)表于 11-29 16:06 ?4次下載
    <b class='flag-5'>STM32F407</b>學(xué)習(xí)記錄---<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>實(shí)驗(yàn)

    STM32F407開(kāi)發(fā)板用戶(hù)手冊(cè)】第21章 STM32F407的NVIC中斷分組和配置(重要)

    STM32F407開(kāi)發(fā)板用戶(hù)手冊(cè)】第21章 STM32F407的NVIC中斷分組和配置(重要)
    發(fā)表于 12-04 13:51 ?21次下載
    【<b class='flag-5'>STM32F407</b>開(kāi)發(fā)板用戶(hù)手冊(cè)】第21章 <b class='flag-5'>STM32F407</b>的NVIC<b class='flag-5'>中斷</b>分組和<b class='flag-5'>配置</b>(重要)

    stm32f407如何配置外部中斷

    這幾天又重新學(xué)了stm32f4,遇到了一個(gè)外部配置的實(shí)驗(yàn),實(shí)驗(yàn)內(nèi)容僅作簡(jiǎn)單的外部中斷,讀者只要搞懂其中的原理,稍微復(fù)雜的
    發(fā)表于 03-05 16:48 ?2449次閱讀

    STM32如何配置外部中斷?STM32外部中斷配置步驟

    STM32如何配置外部中斷?STM32外部中斷
    的頭像 發(fā)表于 10-26 17:47 ?3561次閱讀