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

GD32F303固件庫開發(fā)(15)----外部中斷EXTI

發(fā)布者:AngelicHeart最新更新時間:2024-11-14 來源: elecfans關(guān)鍵字:GD32F303  固件庫開發(fā)  外部中斷  EXTI 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章

概述

本章配置GD32F303使用EXTI進(jìn)行驅(qū)動LED。 需要GD樣片的可以加群申請:615061293 。

視頻教學(xué)

https://www.bilibili.com/video/BV1ig411Y7bB/


csdn課程

課程更加詳細(xì)。

https://download.csdn.net/course/detail/37144

生成例程

這里準(zhǔn)備了自己繪制的開發(fā)板進(jìn)行驗(yàn)證。

查看原理圖,PB14為按鍵管腳。

在這里插入圖片描述

LED管腳為PB7.

在這里插入圖片描述

配置中斷口

GPIO 口連接到 16 個外部中斷 / 事件線如下圖 ??梢钥吹絇C13應(yīng)該是在EXTI14上。

在這里插入圖片描述

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

在這里插入圖片描述
所以需要配置中斷口是上升沿觸發(fā)或者下降沿觸發(fā)。

在這里插入圖片描述

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

配置完中斷優(yōu)先級之后,接著要做的就是編寫中斷服務(wù)函數(shù)。中斷服務(wù)函數(shù)的名字是在 HAL 庫中事先有定義的。
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

中斷線 10-15 共用中斷函數(shù)。一般情況下,我們可以把中斷控制邏輯直接編寫在中斷服務(wù)函數(shù)中。

在這里插入圖片描述

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

同樣的,在mian.c的MX_GPIO_Init中,設(shè)置好中斷線和 GPIO 映射關(guān)系,然后又設(shè)置好了中斷的觸發(fā)模式等初始化參數(shù)。既然是外部中斷,涉及到中斷我們當(dāng)然還要設(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. 當(dāng)兩個中斷源的搶占式優(yōu)先級相同時,這兩個中斷將沒有嵌套關(guān)系,當(dāng)一個中斷到來后,如果正在處理另一個中斷,這個后到來的中斷就要等到前一個中斷處理完之后才能被處理。如果這兩個中斷同時到達(dá),則中斷控制器根據(jù)他們的響應(yīng)優(yōu)先級高低來決定先處理哪一個;如果他們的搶占式優(yōu)先級和響應(yīng)優(yōu)先級都相等,則根據(jù)他們在中斷表中的排位順序決定先處理哪一個。


/**

 @brief 按鍵模塊初始化

 @param 無

 @return 無

*/

void Key_Init(void)

{


    //GPIOA時鐘使能

    rcu_periph_clock_enable(RCU_GPIOB);

    //PA1配置成上拉輸入

    gpio_init(GPIOB, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_14);



    //使能復(fù)用功能時鐘

    rcu_periph_clock_enable(RCU_AF);

    //設(shè)置優(yōu)先級分組

    nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);

    //設(shè)置優(yōu)先級

    nvic_irq_enable(EXTI10_15_IRQn, 2U, 2U);


    //設(shè)置EXTI觸發(fā)源

    gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOB, GPIO_PIN_SOURCE_14);


    //下降沿中斷

    exti_init(EXTI_14, EXTI_INTERRUPT, EXTI_TRIG_RISING);

    //清中斷標(biāo)志

    exti_interrupt_flag_clear(EXTI_14);


}

GPIO配置

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

在這里插入圖片描述

/**

 @brief LED初始化

 @param 無

 @return 無

*/

void LED_Init(void)

{



        /* 使能GPIOB時鐘*/

    rcu_periph_clock_enable(RCU_GPIOB);


    /*設(shè)置PB7為推挽輸出 */

    gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7);


    /* 設(shè)置PB7為輸出為0*/

    gpio_bit_reset(GPIOB, GPIO_PIN_7);    



}

EXTI15_10_IRQHandler

在按鍵觸發(fā)時候翻轉(zhuǎn)LED電平。


/*!

    brief      this function handles external lines 10 to 15 interrupt request

    param[in]  none

    param[out] none

    retval     none

*/

void EXTI10_15_IRQHandler(void)

{

    if (RESET != exti_interrupt_flag_get(EXTI_14)) 

    {

        exti_interrupt_flag_clear(EXTI_14);

        gpio_bit_write(GPIOB, GPIO_PIN_7, (bit_status)(1-gpio_input_bit_get(GPIOB,GPIO_PIN_7) ));                    

    }

}


關(guān)鍵字:GD32F303  固件庫開發(fā)  外部中斷  EXTI 引用地址:GD32F303固件庫開發(fā)(15)----外部中斷EXTI

上一篇:GD32F303固件庫開發(fā)(17)----內(nèi)部Flash讀寫
下一篇:GD32F303固件庫開發(fā)(14)----IIC之配置OLED

推薦閱讀最新更新時間:2025-06-30 15:41

STM32CubeMX的外部中斷的使用
啥是中斷?中斷是指計(jì)算機(jī)運(yùn)行過程中,出現(xiàn)某些意外情況需主機(jī)干預(yù)時,機(jī)器能自動停止正在運(yùn)行的程序并轉(zhuǎn)入處理新情況的程序,處理完畢后又返回原被暫停的程序繼續(xù)運(yùn)行。 舉個例子: 類比一下 在實(shí)際的代碼中,HAL庫的中斷處理較為復(fù)雜:startup_stm32f103xb.s通過匯編注冊了中斷處理函數(shù)EXTI1_IRQHandler(),在stm32f1xx_it.c中,EXTI_IRQHandler()引用了HAL庫的處理函數(shù)HAL_GPIO_EXTI_IRQHandler(),其功能主要為判斷具體的中斷原因,并調(diào)用對應(yīng)的中斷回調(diào)函數(shù):HAL_GPIO_EXTI_Callback()。用戶可以自己重聲明中斷回調(diào)函數(shù)(HAL_
[單片機(jī)]
STM32CubeMX的<font color='red'>外部中斷</font>的使用
stm32 HAL庫開發(fā)-EXTI外部中斷編程
1 編寫流程 如下圖所示,作用于外部IO口的信號,實(shí)際上經(jīng)過三個部分進(jìn)入NVIC控制器:GPIO、EXTI控制器、NVIC控制器。 我們在程序配置中也需要對這三個部分依次設(shè)置。 2 外部中斷實(shí)驗(yàn) 實(shí)驗(yàn)設(shè)計(jì) Nuelco-F091RC開發(fā)板的PA10引腳配置上拉電阻并配置下降沿中斷,PA10外接一按鍵用于接地觸發(fā)中斷。 開發(fā)板PB3引腳配置為推挽輸出并外接LED燈泡,外部中斷服務(wù)函數(shù)將PB3引腳電平翻轉(zhuǎn)從而控制LED亮滅。 實(shí)驗(yàn)程序 宏定義LED和按鍵的引腳和端口 聲明并定義兩個部分的初始化函數(shù) 一定要記得開時鐘,這是Stm32與AVR非常不一樣的地方, KEY_EXTI_Init()函數(shù)中最后要配置NVIC
[單片機(jī)]
7. Stm32f407 key外部中斷
硬件平臺: stm32f407ve 軟件平臺: win10 (OS Name: Microsoft Windows 10 Enterprise OS Version: 10.0.18363 N/A Build 18363) Keil5 5.26.2 HAL庫版本: 2.14.0(目前下載的最新的) 中斷這個部分需要參考中文手冊和權(quán)威指南。 這里我還是提一下NVIC這個東西,全稱是Nested vectored interrupt controller,即嵌套向量中斷控制器。這個器件是用來管理stm32所有中斷的(在現(xiàn)實(shí)
[單片機(jī)]
7. Stm32f407 key<font color='red'>外部中斷</font>
HAL庫教程4:外部中斷
外部中斷機(jī)制 ??本章我們?nèi)匀皇峭ㄟ^按鍵來控制LED,只不過實(shí)現(xiàn)方式由輪詢變?yōu)榱送獠恐袛?。為什么需要外部中斷?為了給CPU減輕負(fù)擔(dān)。 ??舉個例子 ??比如你今天有個快遞,快遞一般放在前臺或是門衛(wèi)。你有兩種方法,1、不停問前臺,你的快遞到了沒有;2、等快遞到了,讓前臺告訴你。 ??前者就是輪詢,后者就是外部中斷。 ??外部中斷是由引腳檢測到的中斷。中斷可以由上升沿、下降沿或雙邊沿觸發(fā)。換句話說,中斷不是由CPU去“詢問”,而是由中斷控制器“通知”的。 ??ARM的體系架構(gòu)決定了處理器是執(zhí)行完當(dāng)前指令后再去檢查是否有中斷發(fā)生。 ??硬件:中斷源- 中斷控制器篩選- CPU核保存當(dāng)前工作狀態(tài),跳到對應(yīng)異常向量表 ??軟件:根據(jù)
[單片機(jī)]
HAL庫教程4:<font color='red'>外部中斷</font>
STM32L0xx_Hal_Driver庫的使用--EXTI
單片機(jī)型號:STM32L051C8T6 開發(fā)環(huán)境MDK5.12 庫版本:STM32L0xx_HAL_Driver V1.1.0 主機(jī)環(huán)境:Windows XP 之前碰到的串口問題還沒解決,現(xiàn)在在學(xué)習(xí)EXTI時又遇到了新的問題。。。很是無語 在編寫EXTI時因?yàn)樾枨筇厥庑枰y(tǒng)計(jì)一些IO口的信號頻率,信號分為兩大類共3種,Oscillator信號其頻率在256HZ左右,M+和M-信號比較特殊其在2S之內(nèi)會有26個左右的波峰,因此對其信號的統(tǒng)計(jì)是統(tǒng)計(jì)2S,Oscillator是統(tǒng)計(jì)1S。管腳分配如下 參考庫中EXTI的例程,編輯代碼,先統(tǒng)計(jì)Oscillator信號,再統(tǒng)計(jì)M+信號,最后統(tǒng)計(jì)M-信號。在主循環(huán)中輸出
[單片機(jī)]
STM32L0xx_Hal_Driver庫的使用--<font color='red'>EXTI</font>
STM8->EXTI
中斷,特別是外部中斷,是MCU實(shí)現(xiàn)復(fù)雜功能的重要手段。 中斷源和向量: 所有I/O引腳都具有外部中斷能力,每一個端口都有獨(dú)立的中斷向量以及獨(dú)立的標(biāo)志 各功能外設(shè)的中斷 最多32個中斷向量(入口地址已由硬件固定),最多40個外部中斷源(4級可編程的軟件嵌套優(yōu)先級),其中的11個中斷向量被分配為外部中斷。 優(yōu)先級及響應(yīng)邏輯: 復(fù)位具有最高優(yōu)先級,復(fù)位期間所有中斷被禁止。 同一時間可以有幾個中斷排隊(duì)等待處理時: 1. 最高軟件優(yōu)先級的中斷被響應(yīng);(通過ITC- SPRx寄存器I1和I0配置每一個中斷的軟件優(yōu)先級) 2. 如果幾個排隊(duì)的中斷具有相同的軟件優(yōu)先級,那么最高
[單片機(jī)]
STM8-><font color='red'>EXTI</font>
AVR單片機(jī)中斷的學(xué)習(xí)探究(外部中斷與內(nèi)部中斷)
最開始的一點(diǎn),所有中斷的配置都必須要打開全局中斷控制#asm(“sei”) //打開SREG的全局使能I置位 首先博主先探究了一下AVR單片機(jī)的外部中斷。 外部中斷需要用的必須先看原理圖的INT0 INT1的引腳。因?yàn)橥獠恐袛嗍峭ㄟ^這兩個引腳來觸發(fā),只要使能引腳,而且配置引腳為輸出方式,電平如果發(fā)生合適的變化(具體通過高低電平還是上升沿下降沿控制是通過MCUCR寄存器來控制),中斷便會觸發(fā)。 配置外部中斷相應(yīng)的寄存器初始化的步驟--寫在init.c中: (1)還是第一點(diǎn),打開全局中斷使能位; (2)配置MCUCR寄存器,通過控制寄存器的位數(shù)來控制具體由什么信號來觸發(fā)中斷; (3)配置通用中斷控制寄存器 GICR:控制哪一個外部中
[單片機(jī)]
stm32 外部中斷知識介紹
中斷分類 STM32的EXTI控制器支持19 個外部中斷/ 事件請求。每個中斷設(shè)有狀態(tài)位,每個中斷/ 事件都有獨(dú)立的觸發(fā)和屏蔽設(shè)置。STM32的19個外部中斷對應(yīng)著19路中斷線,分別是EXTI_Line0-EXTI_Line18: 線0~15:對應(yīng)外部 IO口的輸入中斷。線16:連接到 PVD 輸出。線17:連接到 RTC 鬧鐘事件。線18:連接到 USB 喚醒事件。 觸發(fā)方式 :STM32 的外部中斷是通過邊沿來觸發(fā)的,不支持電平觸發(fā)。 外部中斷分組: STM32 的每一個GPIO都能配
[單片機(jī)]
stm32 <font color='red'>外部中斷</font>知識介紹
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(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