娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

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

發(fā)布者:BlissfulJourney最新更新時(shí)間:2024-12-12 來源: elecfans關(guān)鍵字:EXTI 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

3.1實(shí)驗(yàn)內(nèi)容

通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容:

  • EXTI中斷原理;

  • 按鍵中斷檢測原理;

3.2實(shí)驗(yàn)原理

3.2.1NVIC中斷向量控制器

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

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

wKgaomYgeIuAbuq1AAGck6w07t4329.png

3.2.2EXTI中斷原理

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

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

wKgZomYgeL-AR6F6AABcSvhoh_c460.png

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

wKgaomYgeM-AYF32AAE7qa8O_B0583.pngwKgZomYgeNWAZ4rIAACAXV7GV-k062.png

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

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

wKgZomYgeO2ATxxvAAEDAVUxq1s907.pngwKgZomYgePKAPsG7AADI2AZ267c216.png

3.3硬件設(shè)計(jì)

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

3.4代碼解析

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

主函數(shù)代碼如下所示,主要包括驅(qū)動(dòng)初始化、LED初始化、key按鍵結(jié)構(gòu)體初始化(此處將用戶按鍵配置為中斷模式,并將中斷回調(diào)函數(shù)注冊為USER_KEY_IRQHandler)、串口初始化以及NVIC配置,用戶按鍵使用的是PA1引腳,因而使能EXTI1_IRQn中斷號,延遲1S后,打印Example of key interrupt detection,之后進(jìn)入主循環(huán),在主循環(huán)中查詢USER_KEY.press_timerms標(biāo)志位,當(dāng)USER_KEY被按鍵觸發(fā)中斷后,該標(biāo)志將會(huì)被設(shè)置為PRESS_DOWN,然后被主循環(huán)檢測到后,將會(huì)打印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.rn');

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.rn');
}
}
}

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的中斷服務(wù)程序入口。

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實(shí)驗(yàn)結(jié)果

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


關(guān)鍵字:EXTI 引用地址:【GD32H757Z海棠派開發(fā)板使用手冊】第三講 EXTI-按鍵中斷檢測實(shí)驗(yàn)

上一篇:【GD32F470紫藤派開發(fā)板使用手冊】第十講 USART-中斷串口收發(fā)實(shí)驗(yàn)
下一篇:【GD32F470紫藤派開發(fā)板使用手冊】第四講 FMC-片內(nèi)Flash擦寫讀實(shí)驗(yàn)

推薦閱讀最新更新時(shí)間:2025-06-27 17:20

學(xué)51單片機(jī)-按鍵中斷檢測
接著昨天,繼續(xù)說按鍵的事。昨天說的是掃描檢測,今個(gè)說一下中斷檢測。先插播一個(gè)小故事~~ 當(dāng)年我和凱凱學(xué)單片機(jī)的時(shí)候,我用掃描檢測的方法做的項(xiàng)目,他用中斷檢測的方法做的項(xiàng)目。當(dāng)我倆坐一起交流按鍵檢測的方式時(shí),他火了,直接跳起來跟我吼:你不用中斷怎么檢測? 當(dāng)時(shí)我就意識到他可能陷入了只能用中斷的誤區(qū),然后就樂呵呵的說:用掃描啊~ 他繼續(xù)吼,我繼續(xù)樂,我倆就這樣陷入了死循環(huán)。終于都累了,然后把程序和原理給他看,了解~ 在STC89C52單片機(jī)上,具有外部中斷功能的引腳有兩個(gè):P3.2 –INT0 和 P3.3-INT1。上電默認(rèn)的情況下,他們是普通IO引腳;當(dāng)配置好相關(guān)寄存器之后,他們就變成
[單片機(jī)]
學(xué)51單片機(jī)-<font color='red'>按鍵</font>的<font color='red'>中斷</font><font color='red'>檢測</font>
外部中斷0,1
#include reg52.h #define uint unsigned int #define uchar unsigned char uchar duan ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar liushui ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar num=0; void delay(uint i) { while(i--); } /* ****************************************************************
[單片機(jī)]
<font color='red'>外部中斷</font>0,1
STM32CUBEMX(11)--外部中斷(EXTI)
概述 外部中斷和事件控制器 (EXTI) 管理外部和內(nèi)部異步事件 / 中斷,并生成相應(yīng)的事件請求到CPU/ 中斷控制器和到電源管理的喚醒請求。本例程主要講解如何使用外部中斷觸發(fā)LED。 硬件準(zhǔn)備 首先需要準(zhǔn)備一個(gè)開發(fā)板,這里我準(zhǔn)備的是NUCLEO-F030R8的開發(fā)板: 選擇芯片型號 使用STM32CUBEMX選擇芯片stm32f030r8,如下所示: 配置時(shí)鐘源 HSE與LSE分別為外部高速時(shí)鐘和低速時(shí)鐘,在本文中使用內(nèi)置的時(shí)鐘源,故都選擇Disable選項(xiàng),如下所示: 配置時(shí)鐘樹 STM32F0的最高主頻到48M,所以配置48即可: 中斷口配置 開發(fā)板上的PC13為藍(lán)色按鈕,故配置此端口為中斷口。 GPI
[單片機(jī)]
STM32CUBEMX(11)--<font color='red'>外部中斷</font>(<font color='red'>EXTI</font>)
STM32學(xué)習(xí)之路-外部中斷(1)
所有的GPIO口都有外部中斷的能力,為了使用外部中斷線,端口必須設(shè)置成輸入模式. 輸入模式有三種:上拉、下拉、浮空 請看圖: 上拉輸入模式:區(qū)別在于沒有輸入信號的時(shí)候默認(rèn)輸入高電平 下拉輸入模式:區(qū)別在于沒有輸入信號的時(shí)候默認(rèn)輸入低電平 對于浮空輸入模式顧名思義也就是輸入什么信號才是什么信號,對于浮空輸入要保證有明確的輸入信號 例子: (板子:奮斗V5) GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉 GPIO_Init(GPIOC, &GPIO_InitSt
[單片機(jī)]
STM32學(xué)習(xí)之路-<font color='red'>外部中斷</font>(1)
STM32F1系列HAL庫配置外部中斷——測量pwm頻率
一.中斷的簡單介紹 對于之前的串口配置,之所以把串口中斷擱置是因?yàn)樗鼱砍兜街袛噙@一概念,而我覺得中斷對于像我這樣的初學(xué)者來說是較為難理解的概念,所以,我專門把中斷這個(gè)應(yīng)用拿出來。但是也是很淺顯的一點(diǎn)點(diǎn),畢竟中斷牽扯的確實(shí)有點(diǎn)多,外部中斷(EXIT),串口中斷,ADC中斷及各種外設(shè)中斷,我并不想在這里解釋太多,因?yàn)槲易约哼€有很多地方要學(xué)習(xí),所以把外部中斷拿來分享一下。 中斷 中斷是指計(jì)算機(jī)正在運(yùn)行程序時(shí),出現(xiàn)某些意外需要主機(jī)干預(yù),主機(jī)可以暫停正在進(jìn)行的事情,轉(zhuǎn)而去干預(yù)處理意外事件,等到處理完意外事件時(shí),可以繼續(xù)返回原先被暫停的事情中繼續(xù)執(zhí)行。 外部中斷 外部中斷是單片機(jī)實(shí)時(shí)地處理外部事件的一種內(nèi)部機(jī)制。當(dāng)某種外部事件發(fā)生時(shí),
[單片機(jī)]
STM32F1系列HAL庫配置<font color='red'>外部中斷</font>——測量pwm頻率
51 中斷系統(tǒng) 外部中斷0 外部中斷1
51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu) 中斷允許控制 CPU對中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開放和屏蔽是由中斷允許寄存器IE控制的。 EX0(IE.0),外部中斷0允許位; ET0(IE.1),定時(shí)/計(jì)數(shù)器T0中斷允許位; EX1(IE.2),外部中斷0允許位; ET1(IE.3),定時(shí)/計(jì)數(shù)器T1中斷允許位; ES(IE.4),串行口中斷允許位; EA (IE.7), CPU中斷允許(總允許)位。 中斷請求標(biāo)志 1、TCON的中斷標(biāo)志 IT0(TCON.0),外部中斷0觸發(fā)方式控制位。 當(dāng)IT0=0時(shí),為電平觸發(fā)方式。 當(dāng)IT0=1時(shí),為邊沿觸發(fā)方式(下降沿有效)。 I
[單片機(jī)]
51 <font color='red'>中斷</font>系統(tǒng) <font color='red'>外部中斷</font>0 <font color='red'>外部中斷</font>1
用C51單片機(jī)的外部中斷設(shè)計(jì)1s定時(shí)器
51單片機(jī)給我們提供了2個(gè)計(jì)時(shí)器中斷,分別是計(jì)時(shí)器0和計(jì)時(shí)器1,他們對應(yīng)的優(yōu)先級分別是1和3,開啟計(jì)時(shí)器并允許其中斷后,計(jì)時(shí)器會(huì)從給定的初始值開始,每個(gè)指令周期加1,直到加到65535,再加一時(shí)計(jì)時(shí)器溢出,計(jì)時(shí)器此時(shí)會(huì)進(jìn)入中斷,并執(zhí)行中斷服務(wù)函數(shù)。 雖然書上講的很清楚了,但實(shí)際使用還是有些許差別,我自己是這樣理解的 65536-50000的由來 假設(shè)我使用的單片機(jī)的晶振為12MHZ,其機(jī)器周期是1us,即每1us產(chǎn)生一次計(jì)數(shù) 如果設(shè)計(jì)一個(gè)1s的定時(shí)器,理論上是需要1*10^6個(gè)機(jī)器周期,但定時(shí)器T0只能對機(jī)器周期能進(jìn)行最大65536次計(jì)數(shù),很明顯已經(jīng)超過了,并不能直接采用T0的默認(rèn)值 轉(zhuǎn)下思維模式,取個(gè)65535之內(nèi)的整數(shù)值,
[單片機(jī)]
用C51單片機(jī)的<font color='red'>外部中斷</font>設(shè)計(jì)1s定時(shí)器
C51單片機(jī)外部中斷的觸發(fā)方式
1. 電平觸發(fā)方式 ○ CPU采樣外部中斷引腳電平 ○ 低電平,則硬件置1(IE=1) ○ 高電平,則硬件清0(IE=0) ○ 外部中斷引腳的低電平要一直保持,直到CPU響應(yīng)外部中斷 ○ CPU響應(yīng)中斷后,會(huì)硬件將IE清0(IE=0),但是不會(huì)取消掉外部中斷引腳的低電平,因此需要硬件加軟件清除低電平(p133) 2. 下降沿觸發(fā)方式 ○ CPU采樣外部中斷的引腳電平 ○ 如果上一個(gè)機(jī)器周期電平為高,下一個(gè)機(jī)器周期電平為低,則硬件置1(IE=1) ○ 等待CPU響應(yīng)中斷 ○ CPU響應(yīng)中斷,硬件清0(IE=0)
[單片機(jī)]
C51單片機(jī)<font color='red'>外部中斷</font>的觸發(fā)方式
小廣播
設(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
主站蜘蛛池模板: 新竹市| 新沂市| 响水县| 大足县| 高淳县| 新沂市| 玉田县| 河南省| 顺义区| 蓬莱市| 丰都县| 巩留县| 阳泉市| 突泉县| 抚远县| 义马市| 汨罗市| 海口市| 保山市| 台江县| 错那县| 榆中县| 玛多县| 思南县| 娄底市| 桐城市| 盖州市| 武邑县| 尚志市| 收藏| 会东县| 祁东县| 淳安县| 抚松县| 台东县| 改则县| 隆安县| 宝山区| 海淀区| 巩义市| 千阳县|