女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

【GD32F303紅楓派開發(fā)板使用手冊】第四講 GEXTI-按鍵中斷檢測實驗

聚沃科技 ? 2024-05-31 10:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

wKgaomZVdiiAfR9BAB3mDFhHnZc972.png

4.1實驗內容

通過本實驗主要學習以下內容:

  • EXTI中斷原理;
  • 按鍵中斷檢測原理;

4.2實驗原理

4.2.1NVIC中斷向量控制器

介紹EXTI之前,首先為各位讀者介紹NVIC中斷向量控制器,NVIC為M4內核組件,用于實現(xiàn)高效的異常和中斷處理。NVIC可以支持搶占以及咬尾中斷,具有多達68種外設中斷以及4位中斷優(yōu)先等級配置(最多支持16個中斷有限等級),當中斷或異常產(chǎn)生時,系統(tǒng)自動將當前處理器工作狀態(tài)壓棧,在執(zhí)行完中斷服務子程序(ISR) 后自動將其出棧。

GD32F303系列MCU的中斷向量表如下表所示(包含異常中斷)。

wKgaomZZMUOAKKe6AAZLfpe9MpI833.png

有關NVIC中斷相關配置函數(shù)可參考gd32f30x_misc.c,其中主要有以下幾個函數(shù),其功能簡介如下表所示。

wKgaomZZMVuAaa25AAGOeMO_CvA028.png

4.2.2EXTI中斷原理

EXTI為外部中斷/事件控制器,GD32F303系列MCU EXTI可以最多支持20個相互獨立的邊沿檢測電路并且能夠向處理器內核產(chǎn)生中斷請求或喚醒事件。EXTI有三種觸發(fā)類型:上升沿觸發(fā)、下降沿觸發(fā)和任意沿觸發(fā)。EXTI中的每一個邊沿檢測電路都可以獨立配置和屏蔽。

EXTI框圖如下圖所示,極性控制用于控制邊沿檢測,可實現(xiàn)對外部EXTI信號線進行檢測判斷,當符合相關極性配置的EXTI信號出現(xiàn)后,將會發(fā)出EXTI請求,硬件EXTI請求與內部軟件觸發(fā)信號相或,然后輸出給NVIC中斷向量控制器產(chǎn)生中斷以及輸出至喚醒單元進行喚醒,也即是內部軟件也可以觸發(fā)相關請求。

wKgaomY23rmAKysIAADHefyD1l8246.png

EXTI相關觸發(fā)源如下表所示,所有的GPIO均可以觸發(fā)EXTI,另外LVD、RTC鬧鐘、USB喚醒以及以太網(wǎng)喚醒也可以觸發(fā)EXTI中斷或事件,EXTI可用于喚醒深度睡眠模式下的MCU。

wKgaomY23syANkiFAAF9lZFhLyA501.png
  • 注意:相同編號的引腳共用中斷入口,比如PA0、PB0、PC0均使用EXTI0中斷線,讀者在使用時需注意不同的EXTI中斷需要使用不同編號的GPIO引腳。

?軟件觸發(fā)EXTI中斷請求可通過設置EXTI_SWIEV軟件中斷事件寄存器實現(xiàn),如下圖所示,設置相應控制位為1,即可實現(xiàn)軟件觸發(fā)EXTI中斷請求。

wKgZomY23uGAS0ibAALbL54CmCk304.png

4.3硬件設計

本例程所使用的電路也為按鍵電路,具體可參考3.3章節(jié)描述。

4.4代碼解析

4.4.1主函數(shù)代碼解析

主函數(shù)代碼如下所示,主要包括延遲初始化、LED初始化、key按鍵結構體初始化(此處將KEY0按鍵配置為中斷模式,并將中斷回調函數(shù)注冊為ROCKER_KEY_IRQHandler)、串口初始化以及NVIC配置,KEY0使用的是PE2引腳,因而使能EXTI2_IRQn中斷號,延遲1S后,打印Example of key interrupt detection,之后進入主循環(huán),在主循環(huán)中查詢ROCKER_KEY.press_timerms標志位,當ROCKER_KEY被按鍵觸發(fā)中斷后,該標志將會被設置為PRESS_DOWN,然后被主循環(huán)檢測到后,將會打印ROCKER_KEY is pressed to trigger an interrupt。

C
int main(void)
{
driver_init();
bsp_led_group_init();
bsp_led_on(&LED0);
bsp_led_off(&LED1);

/* 配置按鍵為中斷模式,并注冊按鍵回調函數(shù) */
ROCKER_KEY.key_gpio->gpio_mode = INT_LOW;
ROCKER_KEY.key_gpio->int_callback = ROCKER_KEY_IRQHandler;
bsp_key_init(&ROCKER_KEY);
nvic_irq_enable(EXTI2_IRQn,0,0);

bsp_uart_init(&BOARD_UART);
delay_ms(1000);
printf_log("Example of key interrupt detection.\r\n");

while (1)
{
if(ROCKER_KEY.press_timerms == PRESS_DOWN)
{
/* 檢測到按鍵被按下 */
ROCKER_KEY.press_timerms = PRESS_NONE;
printf_log("ROCKER_KEY is pressed to trigger an interrupt.\r\n");
}
}
}

4.4.2按鍵中斷回調函數(shù)

按鍵中斷回調函數(shù)如下所示,該函數(shù)在dvire_gpio_exti_handle中被調用,dvire_gpio_exti_handle在EXTI2_IRQHandler中被調用,其中EXTI2_IRQHandler為EXTI2的中斷服務程序入口。

C
void ROCKER_KEY_IRQHandler(typdef_gpio_general *KEYx_IO)
{
if(SET==bsp_key_state_get(&ROCKER_KEY))
{
ROCKER_KEY.press_timerms=PRESS_DOWN;
bsp_led_toggle(&LED0);
bsp_led_toggle(&LED1);
}
}

void dvire_gpio_exti_handle(typdef_gpio_general *gpio)
{
bit_status int_input_bit=RESET;
if(exti_flag_get(gpio->extix)==SET)
{
exti_flag_clear(gpio->extix);
int_input_bit=dvire_gpio_pin_filter_get(gpio);

if( (gpio->gpio_mode==INT_LOW && int_input_bit==RESET) || (gpio->gpio_mode==INT_HIGH && int_input_bit==SET) )
{
if(gpio->int_callback!=NULL)
{
gpio->int_callback((typdef_gpio_general *)gpio);
}
}
}
}
void EXTI2_IRQHandler(void)
{
dvire_gpio_exti_handle(ROCKER_KEY.key_gpio);
}

4.5實驗結果

將本例程燒錄到紅楓派開發(fā)板中,通過Type C數(shù)據(jù)線連接USB串口和PC,打開串口調試助手,上電復位后,首先將會打印Example of key interrupt detection.,之后按下ROCKER_KEY按鍵后,將會打印:ROCKER_KEYis pressed to trigger an interrupt.。

wKgaomZZMcWAKaWoAAR7MaMcBEk034.png

教程GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關注聚沃科技官網(wǎng)

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

    關注

    6067

    文章

    44973

    瀏覽量

    649567
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17945

    瀏覽量

    363636
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5647

    瀏覽量

    104023
  • GD32
    +關注

    關注

    7

    文章

    420

    瀏覽量

    25404
  • EXTI
    +關注

    關注

    0

    文章

    27

    瀏覽量

    3919
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于小凌RK2206開發(fā)板:OpenHarmony如何使用IoT接口控制GPIO中斷

    1、實驗簡介本實驗將演示如何在小凌-RK2206開發(fā)板上使用IOT庫的GPIO中斷模式,進行GPIO編程
    的頭像 發(fā)表于 04-21 10:39 ?418次閱讀
    基于小凌<b class='flag-5'>派</b>RK2206<b class='flag-5'>開發(fā)板</b>:OpenHarmony如何使用IoT接口控制GPIO<b class='flag-5'>中斷</b>

    STM32/GD32開發(fā)板基本串口RS232\\RS485通信及CAN接口 usbhid升級 U盤升級 sd卡升級升級學習方案開發(fā)板

    STM32F103/STM32F407/gd32F103/GD32F303開發(fā)板,例程用標準庫開發(fā)
    發(fā)表于 02-27 14:56

    ARM開發(fā)板與樹莓的比較

    處理器 ARM開發(fā)板通常采用不同的ARM處理器,如Cortex-A系列、Cortex-M系列等,而樹莓則主要使用博通的ARM處理器。樹莓的處理器性能相對較高,尤其是在最新的樹莓
    的頭像 發(fā)表于 11-05 11:11 ?1359次閱讀

    迅為itop-3568開發(fā)板AMP雙系統(tǒng)使用手冊之燒寫AMP鏡像

    迅為itop-3568開發(fā)板AMP雙系統(tǒng)使用手冊之燒寫AMP鏡像
    的頭像 發(fā)表于 11-04 15:00 ?1203次閱讀
    迅為itop-3568<b class='flag-5'>開發(fā)板</b>AMP雙系統(tǒng)<b class='flag-5'>使用手冊</b>之燒寫AMP鏡像

    迅為瑞芯微RK3568開發(fā)板/核心《iTOP-3568開發(fā)板實時系統(tǒng)使用手冊

    iTOP-RK3568開發(fā)板使用手冊上新,后續(xù)資料會不斷更新,不斷完善,幫助用戶快速入門,大大提升研發(fā)速度。 iTOP-RK3568開發(fā)板支持了Preemption和Xenomai實時系統(tǒng)。 實時
    發(fā)表于 10-31 09:53

    迅為瑞芯微RK3588開發(fā)板深度剖析丨首選的性能

    ubuntu開發(fā)環(huán)境手冊 22-itop-3588開發(fā)板linux代碼編寫查看環(huán)境搭建手冊 24-itop-3588開發(fā)板ubuntu安裝d
    發(fā)表于 10-17 10:49

    探索巔峰性能 |迅為瑞芯微RK3588開發(fā)板/核心深度剖析

    ubuntu開發(fā)環(huán)境手冊 22-itop-3588開發(fā)板linux代碼編寫查看環(huán)境搭建手冊 24-itop-3588開發(fā)板ubuntu安裝d
    發(fā)表于 09-25 11:15

    【北京迅為】iTOP-i.MX6開發(fā)板使用手冊第四部分固件編譯第十四章非設備樹Android4.4系統(tǒng)編譯

    【北京迅為】iTOP-i.MX6開發(fā)板使用手冊第四部分固件編譯第十四章非設備樹Android4.4系統(tǒng)編譯
    的頭像 發(fā)表于 09-12 15:43 ?895次閱讀
    【北京迅為】iTOP-i.MX6<b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b><b class='flag-5'>第四</b>部分固件編譯第十四章非設備樹Android4.4系統(tǒng)編譯

    迅為RK3588開發(fā)板深度剖析丨首選的性能

    ubuntu開發(fā)環(huán)境手冊 22-itop-3588開發(fā)板linux代碼編寫查看環(huán)境搭建手冊 24-itop-3588開發(fā)板ubuntu安裝d
    發(fā)表于 09-03 15:49

    GD32 MCU 移植教程】2、從 GD32F303 移植到 GD32F503

    GD32E503 系列是 GD 推出的 Cortex_M33 系列產(chǎn)品,該系列資源上與 GD32F303 兼容度非常高,本應用筆記旨在幫助您快速將應用程序從 GD32F303 系列微控
    的頭像 發(fā)表于 08-31 09:36 ?2149次閱讀
    【<b class='flag-5'>GD</b>32 MCU 移植教程】2、從 <b class='flag-5'>GD32F303</b> 移植到 <b class='flag-5'>GD32F</b>503

    樹莓和arm開發(fā)板的區(qū)別

    樹莓(Raspberry Pi)和ARM開發(fā)板都是基于ARM架構的微型計算機,但它們之間存在一些關鍵區(qū)別。 一、歷史背景 樹莓(Raspberry Pi) 樹莓是由英國樹莓
    的頭像 發(fā)表于 08-30 15:36 ?1905次閱讀

    linux開發(fā)板與樹莓的區(qū)別

    定義和用途 Linux開發(fā)板:Linux開發(fā)板是一種基于Linux操作系統(tǒng)的嵌入式開發(fā)板,通常用于工業(yè)自動化、物聯(lián)網(wǎng)、智能家居等領域。 樹莓:樹莓
    的頭像 發(fā)表于 08-30 15:34 ?1904次閱讀

    【「ARM MCU嵌入式開發(fā) | 基于國產(chǎn)GD32F10x芯片」閱讀體驗】+書籍整體概況

    。可以說是內容相當新穎,結合了當代ARM MCU嵌入式開發(fā)市場需求。 二、書籍封面 書籍封面采用國產(chǎn)GD32F10x EVK開發(fā)板做為背景圖片,更易吸引了業(yè)內嵌入式開發(fā)者的興趣,本書還
    發(fā)表于 08-25 22:48

    探索巔峰性能 |迅為 RK3588開發(fā)板深度剖析

    ubuntu開發(fā)環(huán)境手冊 22-itop-3588開發(fā)板linux代碼編寫查看環(huán)境搭建手冊 24-itop-3588開發(fā)板ubuntu安裝d
    發(fā)表于 08-09 15:44

    GD32F303使用KEIL仿真,JLINK連不上什么原因?需要怎么設置?

    GD32F303使用KEIL仿真,JLINK連不上什么原因?需要怎么設置?
    發(fā)表于 07-26 06:34