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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

STM32外部中斷執(zhí)行過(guò)程

冬至子 ? 來(lái)源:硬件工程師的小世界 ? 作者:TTYY ? 2023-04-24 17:43 ? 次閱讀

一、MCU中斷程序執(zhí)行過(guò)程

以MCU裸機(jī)程序框架為例,MCU 的主函數(shù)是個(gè)死循環(huán):

主函數(shù):

main(void)

{

While(1)

{

//主程序

}

}

如果沒(méi)有中斷或異常產(chǎn)生會(huì)一直在while(1)里執(zhí)行主程序代碼。當(dāng)中斷產(chǎn)生后,當(dāng)前執(zhí)行的任務(wù)會(huì)被打斷,程序跳轉(zhuǎn)到中斷處理函數(shù)執(zhí)行,執(zhí)行完會(huì)返回之前的主程序斷點(diǎn)處繼續(xù)執(zhí)行。

中斷處理函數(shù):

void IRQ_handler(void)

{

//中斷處理程序

//清除中斷標(biāo)志,否則會(huì)不停的進(jìn)入中斷處理程序。

}

在中斷處理函數(shù)中不要做復(fù)雜費(fèi)時(shí)的事情,中斷內(nèi)做的事情盡可能少。

二、中斷使用實(shí)例

STM32的IO都可以配置成外部中斷,但不是同時(shí)都可以配成外部中斷。需要遵循如下規(guī)則:

比如PA0設(shè)置成外部中斷,PB0,PC0,PD0就不能配成外部中斷。

比如PA1設(shè)置成外部中斷,PB1,PC1,PD1就不能配成外部中斷。

STM32的EXTI0-15中斷線分配給IO使用。PA0的中斷只能使用EXTI0的中斷請(qǐng)求;PA1中斷只能使用EXTI1的中斷請(qǐng)求。

每個(gè)外部中斷線可以獨(dú)立的配置觸發(fā)方式,包含上升沿,下降沿或者雙邊沿觸發(fā)。每個(gè)中斷可單獨(dú)使能/屏蔽。

STM32的中斷允許嵌套,搶占優(yōu)先級(jí)高的可以打斷搶占優(yōu)先級(jí)低的中斷執(zhí)行。搶占優(yōu)先級(jí)相同時(shí),不能嵌套,不同響應(yīng)優(yōu)先級(jí)中斷同時(shí)發(fā)生,優(yōu)先級(jí)高的先執(zhí)行。在程序設(shè)計(jì)時(shí)要根據(jù)具體情況分配好搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)。

STM32的優(yōu)先級(jí)分搶占和響應(yīng)兩種,具體選擇哪種分組組合可以通過(guò)如下函數(shù)配置:

NVIC_PriorityGroupConfig()

優(yōu)先級(jí)分組組合有5種:

第0組:所有4bit用于指定響應(yīng)優(yōu)先級(jí);

第1組:最高1位用于指定搶占式優(yōu)先級(jí),后面3位用于指定響應(yīng)優(yōu)先級(jí);

第2組:最高2位用于指定搶占式優(yōu)先級(jí),后面2位用于指定響應(yīng)優(yōu)先級(jí);

第3組:最高3位用于指定搶占式優(yōu)先級(jí),后面1位用于指定響應(yīng)優(yōu)先級(jí);

第4組:所有4位用于指定搶占式優(yōu)先級(jí)。

以STM32為例,使用IO端口PB2的外部中斷功能需要做如下初始化配置:

1 使能PB2的端口clock及復(fù)用功能clock

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);

2 中斷優(yōu)先級(jí)初始化

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//選擇中斷分組1

NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQChannel; //選擇中斷通道2

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //搶占中斷優(yōu)先級(jí)設(shè)置為1

NVIC_InitStructure.NVIC_IRQChannelSubPriority =2; //響應(yīng)中斷優(yōu)先級(jí)設(shè)置為2

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //使能中斷

3 IO初始化

PIO_InitStructure.GPIO_Pin=GPIO_Pin_2; //選擇引腳PB2

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //輸出頻率最大50MHz

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;; //輸入

GPIO_Init(GPIOB,&GPIO_InitStructure);

4 把PB2設(shè)置為外部中斷模式

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource2);

EXTI_InitStructure.EXTI_Line = EXTI_Line2; //選擇中斷線路2

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //設(shè)置為中斷請(qǐng)求 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; //觸發(fā)方式為上下降沿觸發(fā)

EXTI_InitStructure.EXTI_LineCmd=ENABLE; //外部中斷使能

EXTI_Init(&EXTI_InitStructure);

5 中斷處理函數(shù)

void EXTI2_IRQHandler(void)

{

//處理程序


//清空中斷標(biāo)志位,防止連續(xù)進(jìn)入中斷

EXTI_ClearITPendingBit(EXTI_Line2);

}

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

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354224
  • 外部中斷
    +關(guān)注

    關(guān)注

    1

    文章

    131

    瀏覽量

    15768
  • 裸機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    6329
  • MCU芯片
    +關(guān)注

    關(guān)注

    3

    文章

    246

    瀏覽量

    11348
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32 GPIO的外部中斷設(shè)計(jì)

    輸入引腳,還可以通過(guò)另外一種叫做外部中斷的方式來(lái)對(duì)引腳的輸入信號(hào)進(jìn)行檢測(cè),本篇首先介紹下EXTI的結(jié)構(gòu),接著介紹外部中斷的相關(guān)概念,對(duì)STM32
    發(fā)表于 04-14 10:51 ?1999次閱讀
    <b class='flag-5'>STM32</b> GPIO的<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>設(shè)計(jì)

    STM32外部中斷使用配置過(guò)程

    一:外部中斷使用配置過(guò)程:(1)配置時(shí)鐘信號(hào)(2)引腳屬性(3)NVIC配置(4)外部中斷配置二:STM
    發(fā)表于 08-16 07:52

    STM32外部中斷實(shí)現(xiàn)紅外遙控功能

    STM32外部中斷實(shí)現(xiàn)紅外遙控功能。
    發(fā)表于 12-14 15:49 ?67次下載

    STM32_外部中斷程序

    STM32 外部中斷程序,很好的學(xué)習(xí)資料,快來(lái)下載吧
    發(fā)表于 02-15 17:09 ?30次下載

    Mini STM32 外部中斷實(shí)驗(yàn)

    一、外部中斷概述1、STM32的每個(gè)IO都可以作為外部中斷輸入。2、STM32
    發(fā)表于 11-22 15:06 ?10次下載
    Mini <b class='flag-5'>STM32</b> <b class='flag-5'>外部</b><b class='flag-5'>中斷</b>實(shí)驗(yàn)

    STM32f10x 外部中斷中斷分組

    利用外部中斷來(lái)實(shí)現(xiàn)按鍵控制LED燈的亮滅。實(shí)驗(yàn)工具:MDK5,STM32F103ZET6開(kāi)發(fā)板使用固件庫(kù)編程LED燈引腳PD13,按鍵PE0首先了解一下32的外部
    發(fā)表于 11-23 18:06 ?4次下載
    <b class='flag-5'>STM32</b>f10x <b class='flag-5'>外部</b><b class='flag-5'>中斷</b>及<b class='flag-5'>中斷</b>分組

    STM32外部中斷實(shí)驗(yàn)-EXTI

    STM32 外部中斷簡(jiǎn)介STM32 的每個(gè) IO 都可以作為外部中斷
    發(fā)表于 11-29 16:06 ?9次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>外部</b><b class='flag-5'>中斷</b>實(shí)驗(yàn)-EXTI

    STM32(六)-------中斷外部中斷

    STM32中斷應(yīng)用中斷知識(shí)介紹STM32 中斷應(yīng)用概覽異常NVIC優(yōu)先級(jí)定義中斷知識(shí)介紹
    發(fā)表于 12-04 17:21 ?9次下載
    <b class='flag-5'>STM32</b>(六)-------<b class='flag-5'>中斷</b>(<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>)

    STM32 外部中斷實(shí)驗(yàn)參考程序

    STM32 外部中斷實(shí)驗(yàn)程序,供STM32初學(xué)者參考。
    發(fā)表于 12-30 10:46 ?41次下載

    STM32_EXTI外部中斷學(xué)習(xí)筆記

    單片機(jī)有兩個(gè)外部中斷?,分別為外部中斷0、1。用來(lái)實(shí)時(shí)地處理外部事件的一種內(nèi)部機(jī)制。當(dāng)某種外部
    發(fā)表于 01-14 15:21 ?3次下載
    <b class='flag-5'>STM32</b>_EXTI<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>學(xué)習(xí)筆記

    STM32的IO外部中斷EXTI的使用

    的方式訪問(wèn)輸入引腳,還可以通過(guò)另外一種叫做外部中斷的方式來(lái)對(duì)引腳的輸入信號(hào)進(jìn)行檢測(cè),本篇首先介紹下EXTI的結(jié)構(gòu),接著介紹外部中斷的相關(guān)概念,對(duì)ST
    的頭像 發(fā)表于 06-22 10:21 ?1915次閱讀
    <b class='flag-5'>STM32</b>的IO<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>EXTI的使用

    STM32單片機(jī)外部中斷簡(jiǎn)介 STM32單片機(jī)外部中斷的配置過(guò)程

    STM32 單片機(jī)是一款高性能、低功耗的 32 位微控制器,具有強(qiáng)大的計(jì)算能力、靈活的外設(shè)模塊以及優(yōu)秀的擴(kuò)展性,開(kāi)發(fā)周期短、成本低。在單片機(jī)應(yīng)用中,外部中斷是一種重要的硬件觸發(fā)方式,本文將對(duì)
    發(fā)表于 08-15 18:21 ?2885次閱讀

    STM32學(xué)習(xí)筆記一外部中斷

    STM32 的每個(gè) IO 都可以作為外部中斷中斷輸入口。STM32F103 的中斷控制器支持
    的頭像 發(fā)表于 10-24 14:12 ?1274次閱讀
    <b class='flag-5'>STM32</b>學(xué)習(xí)筆記一<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

    STM32如何配置外部中斷?STM32外部中斷配置步驟

    STM32如何配置外部中斷?STM32外部中斷配置步驟? 作為一款現(xiàn)代化的微控制器,
    的頭像 發(fā)表于 10-26 17:47 ?3294次閱讀

    STM32外部中斷大問(wèn)題

    出現(xiàn)這種情況,明明沒(méi)有觸發(fā)外部中斷,可是中斷服務(wù)函數(shù)還是不斷的++。問(wèn)題一:電氣噪聲和抖動(dòng)電氣噪聲和抖動(dòng)是常見(jiàn)的問(wèn)題,可能會(huì)導(dǎo)致STM32外部
    的頭像 發(fā)表于 11-08 08:00 ?1885次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>外部</b><b class='flag-5'>中斷</b>大問(wèn)題