精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

STM32F407 外部中斷配置步驟

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

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

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

img

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

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

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

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. 開啟SYSCFG時鐘 */
 RCC- >APB2ENR|=1< 14;
 
   /*2. 開放來自線x上的中斷請求*/
   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)生中斷的對應(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)先級*/
   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)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1592

    瀏覽量

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

    關(guān)注

    3

    文章

    1366

    瀏覽量

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

    關(guān)注

    1

    文章

    131

    瀏覽量

    15801
  • STM32F407
    +關(guān)注

    關(guān)注

    15

    文章

    187

    瀏覽量

    29381
收藏 人收藏

    評論

    相關(guān)推薦

    STM32F407 GPIO口輸入配置配置步驟

    介紹STM32F407新建寄存器工程流程,介紹輸入模式的配置方式,以按鍵為例完成按鍵輸入檢測。
    的頭像 發(fā)表于 07-06 14:28 ?2109次閱讀
    <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ā)送與接收、實現(xiàn)中斷接收,支持printf重定向。
    的頭像 發(fā)表于 07-06 14:29 ?2960次閱讀
    <b class='flag-5'>STM32F407</b> 串口<b class='flag-5'>配置</b><b class='flag-5'>步驟</b>

    STM32F407 基本定時器使用

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

    STM32F407的22個外部中斷

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

    如何去使用STM32F407外部中斷

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

    STM32F407 HAL庫的按鍵中斷配置步驟有哪些

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

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

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

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

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

    STM32F407 UCOS III實驗

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

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

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

    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í)記錄---外部中斷實驗

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

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

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

    stm32f407如何配置外部中斷

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

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

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