那曲檬骨新材料有限公司

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

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

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

STM32CUBEMX(11)--外部中斷(EXTI)

嵌入式單片機MCU開發(fā) ? 來源:嵌入式單片機MCU開發(fā) ? 作者:嵌入式單片機MCU開 ? 2022-11-14 16:39 ? 次閱讀

概述

外部中斷和事件控制器 (EXTI) 管理外部和內(nèi)部異步事件 / 中斷,并生成相應(yīng)的事件請求到CPU/ 中斷控制器和到電源管理的喚醒請求。本例程主要講解如何使用外部中斷觸發(fā)LED

硬件準備

首先需要準備一個開發(fā)板,這里我準備的是NUCLEO-F030R8的開發(fā)板:

在這里插入圖片描述

選擇芯片型號

使用STM32CUBEMX選擇芯片stm32f030r8,如下所示:

在這里插入圖片描述

配置時鐘

HSE與LSE分別為外部高速時鐘和低速時鐘,在本文中使用內(nèi)置的時鐘源,故都選擇Disable選項,如下所示:

在這里插入圖片描述

配置時鐘樹

STM32F0的最高主頻到48M,所以配置48即可:

在這里插入圖片描述

中斷口配置

開發(fā)板上的PC13為藍色按鈕,故配置此端口為中斷口。

在這里插入圖片描述

在這里插入圖片描述

GPIO 口連接到 16 個外部中斷 / 事件線如下圖 。可以看到PC13應(yīng)該是在EXTI13上。

在這里插入圖片描述

外部中斷/事件控制器用于產(chǎn)生事件/中斷請求的邊沿檢測器。每根輸入線都可單獨進行配置,以選擇類型(中斷或事件)和相應(yīng)的觸發(fā)事件(上升沿觸發(fā)、下降沿觸發(fā)或邊沿觸發(fā))。每根輸入線還可單獨屏蔽。掛起寄存器用于保持中斷請求的狀態(tài)線。

在這里插入圖片描述

所以需要配置中斷口是上升沿觸發(fā)或者下降沿觸發(fā)。

在這里插入圖片描述

查看向量表可以得知PC15應(yīng)該開啟EXIT4到15的中斷。

在這里插入圖片描述

在這里插入圖片描述

GPIO配置

PA5為板上LED燈,配置PA5為輸出口,當中斷發(fā)生時候改變IO口極性。

在這里插入圖片描述

在這里插入圖片描述

生成工程設(shè)置

注意在生產(chǎn)工程設(shè)置中不能出現(xiàn)中文,不然會報錯。

在這里插入圖片描述

生成代碼

在這里插入圖片描述

配置keil

在這里插入圖片描述

設(shè)置IO口模式,觸發(fā)條件,設(shè)置 IO 口與中斷線的映射關(guān)系

首先在mian.c的MX_GPIO_Init中,GPIO_Initure.Mode=GPIO_MODE_IT_RISING,這里設(shè)置為上升沿觸發(fā)。Mode值為GPIO_MODE_IT_RISING(外部中斷上升沿觸發(fā)),GPIO_MODE_IT_FALLING(外部中斷下降沿觸發(fā))或者GPIO_MODE_IT_RISING_FALLING(外部中斷雙邊沿觸發(fā))。

GPIO_InitStruct.Pull=GPIO_NOPULL,這個為管腳懸空,沒有上下拉。

在這里插入圖片描述

配置中斷優(yōu)先級(NVIC),并使能中斷

同樣的,在mian.c的MX_GPIO_Init中,設(shè)置好中斷線和 GPIO 映射關(guān)系,然后又設(shè)置好了中斷的觸發(fā)模式等初始化參數(shù)。既然是外部中斷,涉及到中斷我們當然還要設(shè)置 NVIC 中斷優(yōu)先級。

HAL_NVIC_SetPriority的中間0表示搶占優(yōu)先級為0,最右邊的0表示子優(yōu)先級為0。

  1. 搶占優(yōu)先級比子優(yōu)先級的優(yōu)先權(quán)更高,這意味搶占優(yōu)先級更高的中斷會先執(zhí)行,而不管子優(yōu)先級的優(yōu)先權(quán),數(shù)值越低優(yōu)先級越高。
  2. 同理,如果搶占優(yōu)先級相同,那么就會比較子優(yōu)先級,子優(yōu)先級更高的中斷將會先被執(zhí)行,數(shù)值越低優(yōu)先級越高。
  3. 當兩個中斷源的搶占式優(yōu)先級相同時,這兩個中斷將沒有嵌套關(guān)系,當一個中斷到來后,如果正在處理另一個中斷,這個后到來的中斷就要等到前一個中斷處理完之后才能被處理。如果這兩個中斷同時到達,則中斷控制器根據(jù)他們的響應(yīng)優(yōu)先級高低來決定先處理哪一個;如果他們的搶占式優(yōu)先級和響應(yīng)優(yōu)先級都相等,則根據(jù)他們在中斷表中的排位順序決定先處理哪一個。
    在這里插入圖片描述

中斷服務(wù)函數(shù)

配置完中斷優(yōu)先級之后,接著要做的就是編寫中斷服務(wù)函數(shù)。中斷服務(wù)函數(shù)的名字是在 HAL 庫中事先有定義的。STM32F0的IO口外部中斷函數(shù)只有3個。

在這里插入圖片描述

中斷線 0-1每個中斷線對應(yīng)一個中斷函數(shù),中斷線 2-3共用中斷函數(shù) ,中斷線 4-15 共用中斷函數(shù)。一般情況下,我們可以把中斷控制邏輯直接編寫在中斷服務(wù)函數(shù)中,但是 HAL 庫把中斷處理過程進行了簡單封裝。

EXTI4_15_IRQHandler

在stm32f0xx_it.c中,程序開始執(zhí)行EXTI4_15_IRQHandler函數(shù),EXTI4_15_IRQHandler函數(shù)只是調(diào)用了另一個函數(shù)HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);

在這里插入圖片描述

HAL_GPIO_EXTI_Callback

在stm32f0xx_hal_gpio.c中,HAL_GPIO_EXTI_IRQHandler該函數(shù)實現(xiàn)的作用非常簡單,就是清除中斷標志位,然后調(diào)用回調(diào)函數(shù)HAL_GPIO_EXTI_Callback()實現(xiàn)控制邏輯。根據(jù)函數(shù)名Callback也能看出來這里才是真正執(zhí)行具體功能的函數(shù),該函數(shù)需要在mian.c文件中重寫,通過判斷中斷是來自哪個IO口編寫相應(yīng)的中斷服務(wù)控制邏輯。

在這里插入圖片描述

代碼

在main.c中,重寫HAL_GPIO_EXTI_Callback。

/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
    if(GPIO_Pin == GPIO_PIN_13){/* KEY */  
        /* 翻轉(zhuǎn)LED */
        HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
    } 
}
/* USER CODE END 4 */

演示效果

LED燈隨著按鍵按下改變極性。

在這里插入圖片描述

審核編輯:湯梓紅

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

    關(guān)注

    1

    文章

    132

    瀏覽量

    15886
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    284

    瀏覽量

    15005
  • EXTI
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    3707
收藏 人收藏

    評論

    相關(guān)推薦

    STM32CubeMx外部中斷基本使用方法

    第一步:現(xiàn)在STM32CubeMx 中配置所需要IO口外部中斷模式。
    發(fā)表于 05-31 15:32 ?4357次閱讀
    <b class='flag-5'>STM32CubeMx</b><b class='flag-5'>外部</b><b class='flag-5'>中斷</b>基本使用方法

    STM32CUBEMX(11)--外部中斷(EXTI)

    首先需要準備一個開發(fā)板,這里我準備的是NUCLEO-F030R8的開發(fā)板: 選擇芯片型號 使用STM32CUBEMX選擇芯片stm32f030r8,如下所示: 配置時鐘源 HSE與LSE分別為外部
    發(fā)表于 09-10 15:44

    STM32CUBEMX的BUG:NVIC里找不到EXTI中斷

    建立STM32F373CCT6,把PA1設(shè)置為外部中斷,NVIC里找不到EXTI中斷stm32cube
    發(fā)表于 12-07 08:51

    STM32CubeMx外部中斷基本使用方法

    `STM32CubeMx外部中斷基本使用方法第一步:現(xiàn)在STM32CubeMx 中配置所需要IO口外部
    發(fā)表于 01-14 10:02

    STM32CubeMx配置外部中斷簡介

    for STM32F0 Series)本文內(nèi)容:STM32CubeMx 配置外部中斷外部中斷
    發(fā)表于 08-13 08:07

    STM32CubeMX外部中斷的使用

    前言??今天我們來學習STM32CubeMX外部中斷的使用,實現(xiàn)按下KEY0 KEY1 KEY2中斷-->IO-->按鍵映射:??EXTI
    發(fā)表于 08-18 08:12

    基于STM32CubeMx外部中斷設(shè)計步驟

    功能(其中包括中斷源、搶占優(yōu)先級、響應(yīng)優(yōu)先級、中斷的使能與失能基于STM32CubeMx外部中斷設(shè)計步驟:在
    發(fā)表于 01-14 07:04

    STM32CubeMX配置

    一、STM32CubeMX配置(本文使用的STM32CubeMX版本為5.6.0)思路:使用外部中斷方式控制LED,當按下不同的按鍵觸中斷
    發(fā)表于 02-11 06:44

    第二節(jié): 外部中斷學習(用CubeMX學習STM32)

    STM32CubeMX配置, 使用HAL庫,學習STM32外部中斷,hal和CubeMX學習分享
    發(fā)表于 12-05 13:06 ?4次下載
    第二節(jié): <b class='flag-5'>外部</b><b class='flag-5'>中斷</b>學習(用<b class='flag-5'>CubeMX</b>學習<b class='flag-5'>STM32</b>)

    STM32CubeMX學習筆記(3)——EXTI(外部中斷)接口使用

    一、新建工程1. 打開 STM32CubeMX 軟件,點擊“新建工程”2. 選擇 MCU 和封裝3. 配置時鐘RCC 設(shè)置,選擇 HSE(外部高速時鐘) 為 Crystal/Ceramic
    發(fā)表于 12-05 16:36 ?9次下載
    <b class='flag-5'>STM32CubeMX</b>學習筆記(3)——<b class='flag-5'>EXTI</b>(<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>)接口使用

    STM32CubeMX_UART_printf_接收中斷_DMA空閑中斷_LPUART

    文章目錄前言STM32CubeMX新建F767工程UART配置生成代碼串口發(fā)送printf支持串口接收中斷DMA空閑中斷工程代碼微信公眾號前言STM32CubeMX_環(huán)境搭建_GPIO
    發(fā)表于 12-06 18:36 ?6次下載
    <b class='flag-5'>STM32CubeMX</b>_UART_printf_接收<b class='flag-5'>中斷</b>_DMA空閑<b class='flag-5'>中斷</b>_LPUART

    STM32CubeMX系列教程2:外部中斷EXIT

    中斷的形式,通過一個按鍵改變LED燈的工作狀態(tài)。工程可以在前一章的GPIO輸入與輸出的基礎(chǔ)上修改。復(fù)制GPIO_InOut的工程,修改文件夾名為EXIT。配置工程新建工程,可參考 STM32CubeMX系列教程0:創(chuàng)建工程安裝環(huán)境,可參考
    發(fā)表于 01-14 15:38 ?0次下載
    <b class='flag-5'>STM32CubeMX</b>系列教程2:<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>EXIT

    STM32外部中斷控制器EXTI詳解

    什么是外部中斷控制器,外部中斷控制器在STM32芯片中處于什么位置,它的作用是什么,EXTI與G
    的頭像 發(fā)表于 04-20 11:44 ?2795次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>外部</b><b class='flag-5'>中斷</b>控制器<b class='flag-5'>EXTI</b>詳解

    STM32的IO外部中斷EXTI的使用

    的方式訪問輸入引腳,還可以通過另外一種叫做外部中斷的方式來對引腳的輸入信號進行檢測,本篇首先介紹下EXTI的結(jié)構(gòu),接著介紹外部中斷的相關(guān)概念
    的頭像 發(fā)表于 06-22 10:21 ?2211次閱讀
    <b class='flag-5'>STM32</b>的IO<b class='flag-5'>外部</b><b class='flag-5'>中斷</b><b class='flag-5'>EXTI</b>的使用

    STM32CUBEMX開發(fā)GD32F303(15)----外部中斷EXTI

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發(fā),同時通過開發(fā)板內(nèi)進行驗證。 使用外部中斷EXTI進行驅(qū)
    的頭像 發(fā)表于 07-26 15:53 ?1427次閱讀
    <b class='flag-5'>STM32CUBEMX</b>開發(fā)GD32F303(15)----<b class='flag-5'>外部</b><b class='flag-5'>中斷</b><b class='flag-5'>EXTI</b>
    真人百家乐娱乐好玩| 百家乐官网图表分析| 线上百家乐技巧| 百家乐官网波音平台开户导航| 百家乐路珠价格| 百家乐官网真人大头贴| 百家乐开户百家乐技巧| 澳门百家乐官网的故事| 大发888娱乐城建账号| 电子百家乐官网作假| 泾阳县| 豪华百家乐人桌| 明升百家乐官网娱乐城| 德州扑克教学| 百家乐赌博赌博平台| 聚众玩百家乐官网的玩法技巧和规则 | 最佳场百家乐的玩法技巧和规则| 游艇会百家乐官网的玩法技巧和规则| 六合彩印刷图库| 澳门百家乐娱乐城打不开| 百家乐官网高手投注法| 环球百家乐娱乐城| 百家乐投注网站| 清苑县| 威尼斯人娱乐场官网网站是多少| 百家乐官网娱乐官方网| 大发888澳88| 百家乐注册就送| 百家乐官网公式书| 天门市| 大发888laohuji| 百家乐真人游戏开户| 网上赌百家乐官网正规吗| 大发888破解| 7人百家乐中号桌布| 免费百家乐官网平预测软件| 大亨百家乐官网娱乐城| 博彩网18good| 赌片百家乐的玩法技巧和规则| A8百家乐现金网| 怎样玩百家乐官网才能|