女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當(dāng)前位置:首頁(yè) > > 硅農(nóng)亞歷山大
[導(dǎo)讀]外部中斷是單片機(jī)實(shí)時(shí)地處理外部事件的一種機(jī)制。具體指的是,當(dāng)某種外部事件發(fā)生時(shí),單片機(jī)的中斷系統(tǒng)迫使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)而去進(jìn)行中斷事件的處理;中斷處理完畢后,又返回被中斷的程序處,繼續(xù)執(zhí)行下去。這里我們以NucleiBoardLabs中exti_key_interrup...

外部中斷是單片機(jī)實(shí)時(shí)地處理外部事件的一種機(jī)制。具體指的是,當(dāng)某種外部事件發(fā)生時(shí),單片機(jī)的中斷系統(tǒng)迫使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)而去進(jìn)行中斷事件的處理;中斷處理完畢后,又返回被中斷的程序處,繼續(xù)執(zhí)行下去。這里我們以Nuclei Board Labsexti_key_interrupt應(yīng)用程序?yàn)槔?,?jiǎn)單講解外部中斷的非向量處理模式。



系統(tǒng)環(huán)境


Windows 10-64bit



軟件平臺(tái)


NucleiStudio IDE 202102版



硬件需求


RV-STAR開(kāi)發(fā)板




中斷知識(shí)介紹




外部中斷處理介紹


在SoC層面,GD32VF103芯片有多個(gè)外部中斷源,具體包含哪些外部中斷,可以在GD32VF103用戶手冊(cè)第六章:中斷/事件控制器(EXTI)中查看。


本次實(shí)驗(yàn)使用用戶按鍵連接的GPIO作為外部中斷觸發(fā)源,經(jīng)過(guò)SoC層面的中斷/事件控制器(EXTI)檢測(cè)后,再傳遞給增強(qiáng)的內(nèi)核中斷控制器(ECLIC),交由內(nèi)核進(jìn)行中斷管理。


關(guān)于GPIO的使用請(qǐng)看《RVMCU課堂[11]——GPIO使用篇》,這里不做介紹。


中斷/事件控制器(EXTI)的架構(gòu)框圖如下:




EXTI(中斷/事件控制器)有19個(gè)獨(dú)立的邊沿檢測(cè)單元,分別對(duì)應(yīng)連接EXTI0~18,其中的16個(gè)中斷源連接的是GPIO。EXTI有三種觸發(fā)類(lèi)型上升沿觸發(fā)、下降沿觸發(fā)和任意沿觸發(fā)。EXTI中的每 一個(gè)邊沿檢測(cè)電路都可以獨(dú)立配置和屏蔽。



中斷初始化函數(shù)介紹


為了方便進(jìn)一步講解,我們先打開(kāi)Nuclei Board Labsexti_key_interrupt實(shí)驗(yàn)的main.c函數(shù)源碼。其中,main函數(shù)調(diào)用的“ECLIC_Register_IRQ”函數(shù)就是中斷配置函數(shù)。截取ECLIC初始化函數(shù)代碼如下:/* ECLIC config */
returnCode = ECLIC_Register_IRQ( EXTI0_IRQn, ECLIC_NON_VECTOR_INTERRUPT,
ECLIC_LEVEL_TRIGGER,
1,
0,
NULL);



在《RVMCU課堂[10]——處理器內(nèi)部中斷篇》已經(jīng)對(duì)此函數(shù)各參數(shù)的作用有了比較詳細(xì)的介紹,在這里我們只講一下會(huì)產(chǎn)生疑惑的兩個(gè)參數(shù),也就是第一個(gè)和最后一個(gè)參數(shù)。


第一個(gè)參數(shù)設(shè)置要配置的中斷號(hào)。這里我們講解一下如何確定這個(gè)參數(shù)的值。已知實(shí)驗(yàn)要使用外部按鍵接GPIO觸發(fā)外部中斷,那么我們從按鍵看起。


RV-STAR的按鍵的電路原理圖如下:




可以看到,按鍵接到了PA0引腳上。接下來(lái)我們查閱GD32VF103用戶手冊(cè)的第六章:中斷/事件控制器(EXTI),發(fā)現(xiàn)PA0對(duì)應(yīng)的EXTI中斷源為0號(hào)。


由此可知,我們知道本次實(shí)驗(yàn)使用的GPIO引腳PA0對(duì)應(yīng)的是EXTI0,所以這里是EXTI0中斷。所有可用的中斷號(hào)都在“IRQn_Type”枚舉當(dāng)中,在gd32vf103.h文件當(dāng)中可以查看RV-STAR的所有中斷號(hào)。可以看出,從19號(hào)開(kāi)始后面的都是外部中斷,如果配置不同的中斷,需要修改此參數(shù)為對(duì)應(yīng)的中斷號(hào)。


最后一個(gè)參數(shù)配置的是中斷處理函數(shù)。直接來(lái)看的話,雖然這里寫(xiě)的是“NULL”,但是并不代表沒(méi)有中斷處理函數(shù)。RV-STAR的中斷向量表是存儲(chǔ)在flash當(dāng)中的,這就意味著運(yùn)行時(shí)不能直接修改其中的數(shù)據(jù),所以在不修改源碼的情況下,RV-STAR不能通過(guò)這個(gè)參數(shù)修改中斷向量表。這里填寫(xiě)任何函數(shù),都不會(huì)修改這個(gè)中斷號(hào)對(duì)應(yīng)的中斷處理函數(shù)的地址。所以這個(gè)參數(shù)寫(xiě)“NULL”,實(shí)際上還是使用中斷向量表里面的默認(rèn)函數(shù)。


后面的“EXTI0_IRQHandler”函數(shù)就是外部中斷0的默認(rèn)中斷處理函數(shù)。詳細(xì)的中斷向量表可以在startup_gd32vf103.S文件開(kāi)頭部分查看,這里就不一一列舉。





中斷處理函數(shù)介紹


知道了中斷處理函數(shù)是什么,我們?cè)倩氐絤ain.c當(dāng)中,找到“EXTI0_IRQHandler”函數(shù),具體內(nèi)容如下:


void EXTI0_IRQHandler(void)
{
if (RESET != exti_interrupt_flag_get(WAKEUP_KEY_PIN)){

if(RESET == gd_rvstar_key_state_get(KEY_WAKEUP)){
/* toggle RED led */
gd_rvstar_led_toggle(LED3);
}
}
/* clear EXTI lines pending flag */
exti_interrupt_flag_clear(WAKEUP_KEY_PIN);
}


中斷處理函數(shù)中開(kāi)始是按鍵去抖。之后切換LED的狀態(tài),也就是由亮到滅或者由滅到亮。最后一步是清除EXTI0的中斷等待標(biāo)志。


因?yàn)槭褂玫氖?/span>中斷的非向量處理模式,所以在執(zhí)行中斷處理函數(shù)前會(huì)跳轉(zhuǎn)到非向量中斷統(tǒng)一的中斷入口,保存上下文入棧,再跳轉(zhuǎn)至對(duì)應(yīng)的中斷處理函數(shù)中執(zhí)行里面的指令,所以函數(shù)內(nèi)不需要手動(dòng)增加保存上下文和恢復(fù)上下文的操作。





完整實(shí)例



為了便于理解外部中斷程序,我們以Nuclei Board Labs中exti_key_interrupt實(shí)驗(yàn)為實(shí)例,實(shí)際感受一下外部中斷的流程


新建一個(gè)RV-STAR的helloworld工程,具體步驟請(qǐng)參考往期內(nèi)容。


打開(kāi)Nuclei Board Labs中的exti_key_interrupt文件夾,復(fù)制main.c的內(nèi)容替換之前新建的helloworld工程main.c的內(nèi)容。


工程運(yùn)行框圖如下:




在main函數(shù)當(dāng)中,一開(kāi)始是一系列的初始化內(nèi)容,包括開(kāi)發(fā)板初始化,外部中斷初始化和ECLIC初始化。


  • 開(kāi)發(fā)板初始化(Board Config)包含開(kāi)發(fā)板上LED3初始化和按鍵初始化。


  • 外部中斷初始化(EXTI config)包含按鍵外部中斷初始化,主要是GPIO的配置。


  • ECLIC初始化(ECLIC config)是之前講的ECLIC初始化函數(shù)。


以上初始化完成后,main函數(shù)執(zhí)行while(1)循環(huán),等待中斷的到來(lái)。


當(dāng)按下PA0按鍵,觸發(fā)外部中斷,進(jìn)入外部中斷處理函數(shù)當(dāng)中,按鍵彈起,執(zhí)行LED狀態(tài)轉(zhuǎn)換的功能,最后退出中斷處理函數(shù)。


例子main函數(shù)代碼和對(duì)照介紹如下:int main(void)
{
int32_t returnCode;

/* Board Config */
gd_rvstar_led_init(LED3);
gd_rvstar_key_init(WAKEUP_KEY_GPIO_PORT,KEY_MODE_EXTI);

/* EXIT config */
key_exti_init();

/* ECLIC config */
returnCode = ECLIC_Register_IRQ(EXTI0_IRQn, ECLIC_NON_VECTOR_INTERRUPT,
ECLIC_LEVEL_TRIGGER, 1, 0, NULL);

/* Enable interrupts in general */
__enable_irq();

while(1);
return 0;
}







實(shí)際運(yùn)行



工程新建完畢,需要在Launchbar工具中切換使用openocd的debug配置,如下圖:




點(diǎn)擊編譯工程,再點(diǎn)擊Debug下拉框切換為Run,點(diǎn)擊開(kāi)始運(yùn)行。下載結(jié)束記得點(diǎn)擊關(guān)閉openocd。


最終運(yùn)行效果如下:




每當(dāng)按鍵抬起,led的狀態(tài)切換一次。






本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

本屆年會(huì)將在上海(11月13-14日)、北京(11月19-20日)和深圳(11月27-28日)舉行,面向嵌入式設(shè)計(jì)工程師推出25門(mén)技術(shù)課程

關(guān)鍵字: 嵌入式 MCU 模擬

北京2025年9月5日 /美通社/ -- 近日,2025年中瑞商業(yè)大獎(jiǎng)?lì)C獎(jiǎng)典禮在北京舉行,SGS通標(biāo)標(biāo)準(zhǔn)技術(shù)服務(wù)有限公司(以下稱SGS通標(biāo))作為瑞士SGS在中國(guó)的分支機(jī)構(gòu)榮獲了傳承獎(jiǎng)的殊榮。SGS通標(biāo)北京總經(jīng)理...

關(guān)鍵字: 可持續(xù)發(fā)展 ST AI ABILITY

RighValor現(xiàn)已基于Synaptics? Astra? SL1600系列SOC運(yùn)行,提供隱私至上的實(shí)時(shí)邊緣智能。 加利福尼亞州帕洛阿爾托2025年9月5日 /美通社/ --?邊緣分布式代理AI先驅(qū)企業(yè)Righ今日...

關(guān)鍵字: 智能家居 SYNAPTICS AI ST

中國(guó)北京(2025年9月2日)—— 業(yè)界領(lǐng)先的半導(dǎo)體器件供應(yīng)商兆易創(chuàng)新GigaDevice(股票代碼 603986)受邀出席2025智能汽車(chē)基礎(chǔ)軟件生態(tài)大會(huì)暨第四屆中國(guó)汽車(chē)芯片大會(huì),并與國(guó)內(nèi)領(lǐng)先的AUTOSAR車(chē)用操作系...

關(guān)鍵字: 汽車(chē)電子 MCU 智能汽車(chē)

2025年8月26日,?Elexcon深圳國(guó)際電子展?在?深圳會(huì)展中心(福田)1號(hào)館?(展臺(tái)號(hào):1L30)盛大舉行。作為全球電子產(chǎn)業(yè)鏈的重要盛會(huì),展會(huì)匯聚創(chuàng)新技術(shù)與行業(yè)解決方案。米爾電子MYIR攜RZ系列核心板、開(kāi)發(fā)板等...

關(guān)鍵字: 核心板 開(kāi)發(fā)板 MCU

針對(duì)HMI應(yīng)用所需的段碼式LCD和電容式觸控進(jìn)行優(yōu)化,為電磁爐提供精準(zhǔn)控制;支持通過(guò)雙區(qū)閃存實(shí)現(xiàn)便捷、安全的OTA

關(guān)鍵字: MCU 智能家電 電磁爐

聚焦工業(yè)4.0及能源管理應(yīng)用對(duì)主控MCU的高性能需求,極海正式發(fā)布APM32F425/427系列高性能拓展型MCU,集合運(yùn)算性能、ADC性能、Flash控制器性能與通信接口四大維度革新,進(jìn)一步增強(qiáng)了EMC性能,重新定義C...

關(guān)鍵字: MCU 工業(yè)應(yīng)用 極海

MarketsandMarkets預(yù)測(cè),到2027年,全球嵌入式AI市場(chǎng)規(guī)模將超過(guò)200億美元,年復(fù)合增長(zhǎng)率高達(dá)30%。這一增長(zhǎng)背后,是對(duì)高算力、低功耗、實(shí)時(shí)性和安全性的迫切需求,以及技術(shù)碎片化與跨界融合的復(fù)雜挑戰(zhàn)。在這...

關(guān)鍵字: Renesas AI 瑞薩電子 嵌入式AI MCU MPU

全新產(chǎn)品滿足DLMS Suite2表計(jì)應(yīng)用安全法規(guī),提供豐富的通信選項(xiàng)、電容式觸摸界面,以及支持軟件更新的雙區(qū)閃存

關(guān)鍵字: MCU 閃存 恒溫器

由于邊緣AI是指在邊緣設(shè)備上部署和運(yùn)行AI模型,而不是將數(shù)據(jù)傳輸?shù)街醒敕?wù)器進(jìn)行處理。這種方式具有低延遲、高響應(yīng)速度、保護(hù)隱私和降低數(shù)據(jù)傳輸成本等優(yōu)勢(shì)。微控制器(MCU)作為電子設(shè)備的主控制芯片,在邊緣AI的發(fā)展中扮演著...

關(guān)鍵字: MCU AI
關(guān)閉