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

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

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

3.1實驗內(nèi)容

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

  • EXTI中斷原理;

  • 按鍵中斷檢測原理;

3.2實驗原理

3.2.1NVIC中斷向量控制器

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

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

wKgaomY23qOAEmmfAAG0vgy2_U4513.png

3.2.2EXTI中斷原理

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

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

wKgaomY23rmAKysIAADHefyD1l8246.png

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

wKgaomY23syANkiFAAF9lZFhLyA501.png

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

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

wKgZomY23uGAS0ibAALbL54CmCk304.png

3.3硬件設(shè)計

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

3.4代碼解析

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

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

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

wKgaomY23w-AQAFRACT6Poexn24819.png

關(guān)鍵字:EXTI 引用地址:【GD32F470紫藤派開發(fā)板使用手冊】第三講 EXTI-按鍵中斷檢測實驗

上一篇:【GD32F303紅楓派開發(fā)板使用手冊】第一講 RCU-時鐘配置及輸出實驗
下一篇:【GD32F303紅楓派開發(fā)板使用手冊】第十講 FWDGT-獨立看門狗實驗

推薦閱讀最新更新時間:2025-07-03 11:02

基礎(chǔ)外部中斷
外部中斷 中斷函數(shù):檢測到外部中斷后將自動跳轉(zhuǎn)執(zhí)行的函數(shù);(stm32F103的外部中斷函數(shù)只有7個) 中斷引腳:可以引起中斷的引腳(stm32中的所有引腳); 中斷線:由于中斷引腳數(shù)目多,所以中斷線是真實產(chǎn)生的中斷信號,有16條中斷線,第一條對應(yīng)(GPIOA、B-F,的第0引腳) 當(dāng)中斷引腳和中斷線連接起時才可以產(chǎn)生中斷(這時可以產(chǎn)生16個外部中斷信號,但是只有7個外部中斷函數(shù))所以,0-4中斷線的中斷信號都有一個中斷函數(shù)處理,5-9的是一個中斷函數(shù)處理,10-f的是一個中斷函數(shù)處理;(外部中斷線有16個,但是中斷線有20個) 外部中斷函數(shù)定義如下: DCD EXTI0_IRQHandler
[單片機]
s5pv210的外部中斷
中斷,在學(xué)單片機的時候就沒有學(xué)好,這次接觸到210的中斷體系,直接蒙圈了。。前天下午老師簡單的講了一下,他的每句話拆開都可以聽得懂,聯(lián)系起來就傻了,,而且懂了與會寫差距還遠著呢。當(dāng)天下午所有人都是萎靡的狀態(tài)(不懂,不會寫極其郁悶),以為參照裸機開發(fā)指南可以邊寫會慢慢理解,結(jié)果越寫越是打擊。晚上沒有回去,一直想體驗下在教室通宵的感覺,除了蚊子比較多、床不好睡、網(wǎng)速依舊渣、睡得太累,好吧,好像并沒有什么優(yōu)點。 雖然說是通宵了,但是幾乎什么都沒有學(xué)到,反而把自己搞得勞累。得不償失!早上去領(lǐng)了免費包子,吃完回教室,大家在吐槽寢室那邊“習(xí)俗”的事和程序的事,得到老師的承諾說下午會帶著寫程序,整個早上也沒有怎么瞎折騰了,隨便看看。
[單片機]
AT89S51單片機擴充外部中斷源系統(tǒng)的設(shè)計
AT89S51為用戶提供兩個外部中斷請求輸入端INT0(的反)和INT1(的反),實際的應(yīng)用系統(tǒng)中,兩個外部中斷請求源往往不夠用,需對外部中斷源進行擴充。下面介紹一種擴充外部中斷源的方法。 如下圖所示,若系統(tǒng)中有5個外部中斷請求源IR0~IR4,它們均為高電平請求有效,這時可按中斷請求的輕重緩急進行排隊,把其中最高級別的中斷請求源IR0直接接到AT89S51的一個外部中斷請求源IR0輸入端INT0,其余的4個中斷請求源IR1~IR4按下圖所示的方法通過各自的OC門(集電極開路門)連到AT89S51的另一個外中斷源輸入端INT1,同時還連到P1口的P1.0~P1.3腳,供AT89S51查詢。各外部中斷請求源的中斷請求由外部設(shè)備的
[單片機]
AT89S51單片機擴充<font color='red'>外部中斷</font>源系統(tǒng)的設(shè)計
關(guān)于STM32F407的NVIC、EXTI相關(guān)入門知識
NVIC與EXTI關(guān)系 EXTI是ST公司在其STM32產(chǎn)品上擴展的外中斷控制。它負(fù)責(zé)管理映射到GPIO引腳上的外中斷和片內(nèi)幾個集成外設(shè)的中斷(PVD,RTC alarm,USB wakeup,ethernet wakeup),以及軟件中斷。其輸出最終被映射到NVIC的相應(yīng)通道。因此,配置EXTI中斷的過程必然包含對NVIC的配置,例如下面配置EXTI0的過程,就要首先配置EXTI控制器(使能相應(yīng)的中斷線,選擇中斷/事件模式,觸發(fā)邊沿極性),然后再配置NVIC控制器(EXTI0映射在NVIC上的通道號,中斷優(yōu)先級,中斷屏蔽狀態(tài)):------來源于STM32中EXTI(外部中斷)和NVIC(嵌套向量中斷)的關(guān)系 - 21ic電子網(wǎng)
[單片機]
關(guān)于STM32F407的NVIC、<font color='red'>EXTI</font>相關(guān)入門知識
C51編程13-中斷篇(外部中斷
CPU在執(zhí)行的過程中,一般來說都是在執(zhí)行主程序(main函數(shù)里面的代碼)。如果希望處理其他的功能,可以通過查詢的方式進行,判斷是否需要處理或者通過中斷的方式,進入中斷服務(wù)函數(shù)程序里面執(zhí)行。 前者是在主程序中判斷條件是否成立,如果成立則執(zhí)行其他功能,否則不執(zhí)行;后者是CPU在執(zhí)行過程中,判斷是否有中斷標(biāo)志位,響應(yīng)中斷進入中斷服務(wù)函數(shù),執(zhí)行相關(guān)功能。 MCS-51 單片機中,有兩個外部中斷(INT0與INT1),中斷有兩種方式低電平觸發(fā)與負(fù)跳變(下降沿)觸發(fā)。 下面通過講INT0說明外部中斷,INT1同理。 原理圖: P0連接8個LED,INT0引腳連接一個按鈕連接到地。 在中斷系統(tǒng)中,INT0設(shè)計的寄存器中
[單片機]
C51編程13-<font color='red'>中斷</font>篇(<font color='red'>外部中斷</font>)
MC9S12G128模塊化分層化軟件架構(gòu)之七_外部中斷
1 overview 1.1 目的 本文檔用于起點開發(fā)板的外部中斷模塊軟件說明。 不局限于硬件功能的實現(xiàn),著眼于實現(xiàn)高質(zhì)量、優(yōu)美的軟件。 2 優(yōu)化內(nèi)容 2.1 軟件功能 ①增加PORTA、PORTB、PORTC、PORTD和PORTAD引腳的相關(guān)配置; ②driver層和module層針對新增的PORT進行調(diào)整; 2.2 編程健壯性 ①常量前增加const修飾; ②僅用于本文件調(diào)用的變量和函數(shù)前增加static; 3 軟件實現(xiàn) 3.1 CodingRule 具體可在源碼的Sourcescode_rules.txt中可見。 3.2 中斷基礎(chǔ)知識 3.2.1 mc9s12g128的中斷向量號 見mc9s12
[單片機]
MC9S12G128模塊化分層化軟件架構(gòu)之七_<font color='red'>外部中斷</font>
再造STM32---第十五部分:EXTI外部中斷/事件控制器
本章參考資料:《STM32F4xx 中文參考手冊》系統(tǒng)配置控制器以及中斷和事件章節(jié)。上一章節(jié)我們已經(jīng)詳細(xì)介紹了 NVIC,對 STM32F4xx 中斷管理系統(tǒng)有個全局的了解,我們這章的內(nèi)容是 NVIC 的實例應(yīng)用,也是 STM32F4xx 控制器非常重要的一個資源。 學(xué)習(xí)本章時,配合《STM32F4xx 中文參考手冊》系統(tǒng)配置控制器以及中斷和事件章節(jié)一起閱讀,效果會更佳,特別是涉及到寄存器說明的部分。 特別說明,本書內(nèi)容是以 STM32F42xxx 系列控制器資源講解。 15.1 EXTI 簡介: 外部中斷/事件控制器(EXTI)管理了控制器的 23 個中斷/事件線。每個中斷/事件線都對應(yīng)
[單片機]
再造STM32---第十五部分:<font color='red'>EXTI</font>—<font color='red'>外部中斷</font>/事件控制器
stm32 外部中斷 按鍵的誤觸發(fā)
最近在調(diào)試按鍵作為外部中斷exti進行觸發(fā)動作,發(fā)現(xiàn)每次按鍵按下和按鍵抬起都會多次進入中斷函數(shù),造成程序不穩(wěn)定,經(jīng)過反復(fù)調(diào)試和查閱資料,最后終于已經(jīng)把這個問題解決,現(xiàn)在總結(jié)一下: 1、EXTI重復(fù)配置兩次導(dǎo)致誤觸發(fā)中斷的問題 如果重復(fù)兩次配置EXTI的話,由于第一次已經(jīng)打開中斷,當(dāng)進行第二次配置中斷的時候,會把中斷引腳首先配置成默認(rèn)引腳,然后在配置成目的引腳,這樣由于默認(rèn)引腳是低電平,所以在切換的過程中就會進入一次中斷??!具體請參見:http://bbs.elecfans.com/jishu_942011_1_1.html 2、STM32F401 外部中斷誤觸發(fā)問題 現(xiàn)象:調(diào)試STM32F411低功耗的時候,使用的
[單片機]
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

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