在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

【GD32H757Z海棠派開發(fā)板使用手冊】第三講 EXTI-按鍵中斷檢測實驗

聚沃科技 ? 2024-04-18 09:38 ? 次閱讀
wKgZomYgeJOAUiXJAB6mQrDJGEg027.png

3.1實驗內(nèi)容

通過本實驗主要學習以下內(nèi)容:

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

3.2實驗原理

3.2.1NVIC中斷向量控制器

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

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

wKgaomYgeIuAbuq1AAGck6w07t4329.png

3.2.2EXTI中斷原理

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

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

wKgZomYgeL-AR6F6AABcSvhoh_c460.png

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

wKgaomYgeM-AYF32AAE7qa8O_B0583.pngwKgZomYgeNWAZ4rIAACAXV7GV-k062.png

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

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

wKgZomYgeO2ATxxvAAEDAVUxq1s907.pngwKgZomYgePKAPsG7AADI2AZ267c216.png

3.3硬件設計

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

3.4代碼解析

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

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

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

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

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

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

3.4.2按鍵中斷回調(diào)函數(shù)

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

C
void USER_KEY_IRQHandler(typdef_gpio_general *KEYx_IO)
{
if(SET==bsp_key_state_get(&USER_KEY))
{
USER_KEY.press_timerms=PRESS_DOWN;
bsp_led_toggle(&LED2);
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 EXTI1_IRQHandler(void)
{
dvire_gpio_exti_handle(USER_KEY.key_gpio);
}

3.5實驗結果

將本例程燒錄到海棠派開發(fā)板中,在液晶上首先將會打印Example of key interrupt detection.,之后按下USER_KEY按鍵后,將會打印:USER_KEYis pressed to trigger an interrupt.。

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

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

    關注

    6037

    文章

    44558

    瀏覽量

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

    關注

    25

    文章

    5050

    瀏覽量

    97471
  • GD32
    +關注

    關注

    7

    文章

    403

    瀏覽量

    24351
  • EXTI
    +關注

    關注

    0

    文章

    27

    瀏覽量

    3690
收藏 人收藏

    評論

    相關推薦

    GD32H757Z海棠開發(fā)板使用手冊】第十三講 SDIO-SD卡讀寫實驗

    通過本實驗主要學習以下內(nèi)容: ?USB協(xié)議基本原理 ?GD32H7xx USBHS的使用 ?虛擬鍵盤的協(xié)議原理及使用
    的頭像 發(fā)表于 06-06 11:26 ?1918次閱讀
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第十<b class='flag-5'>三講</b> SDIO-SD卡讀寫<b class='flag-5'>實驗</b>

    迅為iMX6ULL開發(fā)板使用手冊資料下載

    開發(fā)板使用手冊》第一部分 開發(fā)板入門第二部分 開發(fā)環(huán)境搭建第三部分 Linux系統(tǒng)編譯第四部分 QT
    發(fā)表于 12-02 14:13

    YL-51開發(fā)板使用手冊

    YL-51開發(fā)板使用手冊,YL-51開發(fā)板使用手冊YL-51開發(fā)板使用手冊YL-51
    發(fā)表于 05-10 16:31 ?21次下載

    51開發(fā)板使用手冊

    51開發(fā)板使用手冊,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-23 15:45 ?11次下載

    STC15單片機實戰(zhàn)項目軟件開發(fā)第三講 - 按鍵檢測(外部中斷)

    STC15單片機實戰(zhàn)項目軟件開發(fā)第三講 - 按鍵檢測(外部中斷)
    發(fā)表于 11-22 15:06 ?17次下載
    STC15單片機實戰(zhàn)項目軟件<b class='flag-5'>開發(fā)</b><b class='flag-5'>第三講</b> - <b class='flag-5'>按鍵</b><b class='flag-5'>檢測</b>(外部<b class='flag-5'>中斷</b>)

    GD32H757Z海棠開發(fā)板使用手冊】第二 GPIO-按鍵查詢檢測實驗

    2.1實驗內(nèi)容通過本實驗主要學習以下內(nèi)容:GPIO輸入功能原理;按鍵查詢輸入檢測原理;2.2實驗原理2.2.1GPIO輸入功能原理
    的頭像 發(fā)表于 04-17 10:42 ?741次閱讀
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第二<b class='flag-5'>講</b> GPIO-<b class='flag-5'>按鍵</b>查詢<b class='flag-5'>檢測</b><b class='flag-5'>實驗</b>

    GD32H757Z海棠開發(fā)板使用手冊】第五 PMU-低功耗實驗

    PMU即電源管理單元,其內(nèi)部結構下圖所示,由該圖可知,GD32H7XX系列MCU具有個電源域,包括VDD/VDDA電源域、0.9V電源域以及電池備份域,其中,VDD /VDDA域由電源直接供電
    的頭像 發(fā)表于 04-20 09:32 ?1034次閱讀
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第五<b class='flag-5'>講</b> PMU-低功耗<b class='flag-5'>實驗</b>

    GD32F470紫藤開發(fā)板使用手冊第三講 EXTI-按鍵中斷檢測實驗

    通過本實驗主要學習以下內(nèi)容: EXTI中斷原理; 按鍵中斷檢測原理;
    的頭像 發(fā)表于 05-05 09:22 ?542次閱讀
    【<b class='flag-5'>GD</b>32F470紫藤<b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】<b class='flag-5'>第三講</b> <b class='flag-5'>EXTI-</b><b class='flag-5'>按鍵</b><b class='flag-5'>中斷</b><b class='flag-5'>檢測</b><b class='flag-5'>實驗</b>

    GD32H757Z海棠開發(fā)板使用手冊】第六 TIMER_3路PWM輸出實驗

    通過本實驗主要學習以下內(nèi)容: TIMER PWM輸出原理 TIMER 定時中斷
    的頭像 發(fā)表于 05-09 09:36 ?662次閱讀
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第六<b class='flag-5'>講</b> TIMER_3路PWM輸出<b class='flag-5'>實驗</b>

    GD32H757Z海棠開發(fā)板使用手冊】第八 ADC-規(guī)則組多通道采樣實驗

    通過本實驗主要學習以下內(nèi)容: ADC的簡介 GD32FH757 ADC工作原理 DMA和DMAMUX的原理 規(guī)則組多通道循環(huán)采樣
    的頭像 發(fā)表于 05-14 09:39 ?634次閱讀
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第八<b class='flag-5'>講</b> ADC-規(guī)則組多通道采樣<b class='flag-5'>實驗</b>

    GD32H757Z海棠開發(fā)板使用手冊】第九 USART-printf打印實驗

    通過本實驗主要學習以下內(nèi)容: ?串口簡介 ?GD32H757串口工作原理 ?使用printf打印信息
    的頭像 發(fā)表于 05-15 11:39 ?727次閱讀
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第九<b class='flag-5'>講</b> USART-printf打印<b class='flag-5'>實驗</b>

    GD32H757Z海棠開發(fā)板使用手冊】第十 USART-中斷串口收發(fā)實驗

    通過本實驗主要學習以下內(nèi)容: ?使用中斷進行串口收發(fā)
    的頭像 發(fā)表于 05-16 10:30 ?684次閱讀
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第十<b class='flag-5'>講</b> USART-<b class='flag-5'>中斷</b>串口收發(fā)<b class='flag-5'>實驗</b>

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

    通過本實驗主要學習以下內(nèi)容: ?EXTI中斷原理; ?按鍵中斷檢測原理;
    的頭像 發(fā)表于 05-31 10:13 ?569次閱讀
    【<b class='flag-5'>GD</b>32F303紅楓<b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第四<b class='flag-5'>講</b> GEXTI-<b class='flag-5'>按鍵</b><b class='flag-5'>中斷</b><b class='flag-5'>檢測</b><b class='flag-5'>實驗</b>

    GD32H757Z海棠開發(fā)板使用手冊】第十一講 SPI-SPI NOR FLASH讀寫實驗

    通過本實驗主要學習以下內(nèi)容: ?SPI簡介 ?GD32H7 SPI簡介 ?SPI NOR FLASH——GD25Q128ESIGR簡介 ?使用GD32H7 SPI接口實現(xiàn)對
    的頭像 發(fā)表于 06-04 11:42 ?1007次閱讀
    【<b class='flag-5'>GD32H757Z</b><b class='flag-5'>海棠</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第十一講 SPI-SPI NOR FLASH讀寫<b class='flag-5'>實驗</b>

    GD32F303紅楓開發(fā)板使用手冊】第二十 SPI-SPI NAND FLASH讀寫實驗

    通過本實驗主要學習以下內(nèi)容: ?SPI通信協(xié)議,參考19.2.1東方紅開發(fā)板使用手冊 ?GD32F303 SPI操作方式,參考19.2.2東方紅
    的頭像 發(fā)表于 06-20 09:50 ?904次閱讀
    【<b class='flag-5'>GD</b>32F303紅楓<b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第二十<b class='flag-5'>講</b> SPI-SPI NAND FLASH讀寫<b class='flag-5'>實驗</b>
    主站蜘蛛池模板: 91久久天天躁狠狠躁夜夜| 亚洲综合精品成人啪啪| ccav在线永久免费看| 五月婷婷六月天| 国产精品成人四虎免费视频| 久久久久久国产精品免费免费| 啪啪福利视频| 两人性世界| 久久久国产精品免费| 中国成人在线视频| 久久婷婷成人综合色| 黑人黄色大片| 一本到卡二卡三卡免费高| 黄色美女网站免费看| 国产免费爽爽视频免费可以看| 一级黄色日本| 成人av电影在线| h国产在线| 欧美精品综合一区二区三区| 天天干天| 99久久精品费精品国产一区二| 黄色免费毛片| 奇米影视亚洲春色77777| 四虎影片国产精品8848| 小说区v天堂网| 精品精品国产自在久久高清| 久久综合九九亚洲一区| 国产精品午夜高清在线观看| 婷婷99视频精品全部在线观看| 9797色| 天天干夜夜玩| 国内自拍露脸普通话对白在线| 影院在线观看免费| 日本大片免费一级| 久在操| 色中色综合| 神马影院午夜在线| 亚洲性人人天天夜夜摸| 在线视频久久| 国色天香网在线| 99国产精品农村一级毛片|