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

歷史上的今天

今天是:2025年06月27日(星期五)

正在發(fā)生

2020年06月27日 | STM32CubeMX系列教程2:外部中斷(EXIT)

發(fā)布者:gamma14 來(lái)源: eefocus關(guān)鍵字:STM32CubeMX系列  外部中斷  EXIT 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

這一章我們?cè)谇耙徽翯PIO的工程修改。復(fù)制GPIO的工程,修改文件夾名。點(diǎn)擊STM32F746I.ioc打開STM32cubeMX的工程文件重新配置。PA0管腳重新配置為GPIO_EXIT0模式。

WAKEUP按鍵已經(jīng)外部下拉,按下是PA0為高電平。在GPIO配置中配置PA0為上升沿觸發(fā)。內(nèi)部既不上拉也不下拉,添加用戶標(biāo)簽WAKEUP。

在NVIC(嵌套向量中斷控制器)中,勾選EXIT Line0 interrupt使能PA0中斷。右邊兩個(gè)選項(xiàng)設(shè)置搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)。此處我們選擇默認(rèn)的,不修改。

在這里簡(jiǎn)單介紹一下NVIC(嵌套向量中斷控制器)。NVIC就是控制中斷響應(yīng)的。主要由三個(gè)參數(shù),一個(gè)是中斷使能,一個(gè)是搶占優(yōu)先級(jí),還有一個(gè)就是響應(yīng)優(yōu)先級(jí)。(優(yōu)先級(jí)數(shù)值越小,優(yōu)先級(jí)別越高)


中斷使能很好理解,就是是否開啟中斷,如果開啟中斷,則滿足中斷觸發(fā)條件時(shí)程序會(huì)跳到中斷服務(wù)程序運(yùn)行,否則不響應(yīng)中斷主程序繼續(xù)運(yùn)行。


搶占優(yōu)先級(jí)是用來(lái)判斷一個(gè)中斷是否可以打斷另外一個(gè)中斷的中斷服務(wù)程序搶先運(yùn)行。例如A中斷觸發(fā),正在運(yùn)行A中斷的服務(wù)程序,此時(shí)B中斷也觸發(fā),如果B中斷的搶占優(yōu)先級(jí)比A的高,則程序會(huì)打斷A的中斷服務(wù)程序,去運(yùn)行B的中斷服務(wù)程序,即中斷嵌套。等B的中斷服務(wù)程序運(yùn)行完后繼續(xù)運(yùn)行A的中斷服務(wù)程序。如果B的搶占優(yōu)先級(jí)沒(méi)有高過(guò)A的搶占優(yōu)先級(jí),則程序不會(huì)打斷A的中斷服務(wù)程序,而是待定A的中斷服務(wù)程序運(yùn)行完成后才運(yùn)行B的中斷服務(wù)程序。


響應(yīng)優(yōu)先級(jí)是用來(lái)判斷搶占優(yōu)先級(jí)相同的幾個(gè)中斷那個(gè)中斷會(huì)優(yōu)先響應(yīng)。如果幾個(gè)搶占優(yōu)先相同的中斷同時(shí)觸發(fā),那么響應(yīng)優(yōu)先級(jí)高的最先運(yùn)行。


判斷中斷的優(yōu)先級(jí),先看搶占優(yōu)先級(jí),搶占優(yōu)先級(jí)高的中斷優(yōu)先級(jí)別高。搶占優(yōu)先級(jí)相同的情況下,響應(yīng)優(yōu)先高的中斷優(yōu)先級(jí)別高。搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)相同的情況下,更加中斷向量表確定。如下為部分中斷向量表,詳細(xì)的可以查看stm32F7的數(shù)據(jù)手冊(cè)。

       

在這里簡(jiǎn)單講解一下優(yōu)先級(jí)分組。STM32以4個(gè)比特位表示中斷的搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)。中斷優(yōu)先級(jí)分組是為了給搶占式優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)在中斷優(yōu)先級(jí)寄叢器的四個(gè)比特位分配各個(gè)優(yōu)先級(jí)數(shù)字所占的位數(shù)。例如3位用于搶占優(yōu)先級(jí)(優(yōu)先級(jí)有2^3=8種優(yōu)先級(jí)),1位用于響應(yīng)優(yōu)先級(jí)(優(yōu)先級(jí)有2^1=2種優(yōu)先級(jí))。

在這里我們就配置好stm32CubeMX工程,重新生成報(bào)告,以及重新生成代碼,編譯程序。

打開main.c文件。把main()函數(shù)里while循環(huán)上一章的代碼刪掉,while循環(huán)里面為空。在main.c文件后面USER CODE BEGIN 4 和 USER CODE END 4 中間添加中斷回調(diào)函數(shù)。

01/* USER CODE BEGIN 4 */
02/**
03  * @brief EXTI line detection callbacks
04  * @param GPIO_Pin: Specifies the pins connected EXTI line
05  * @retval None
06  */
07void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
08{
09  if(GPIO_Pin == GPIO_PIN_0)
10  {
11    /* Toggle LED1 */
12    BSP_LED_Toggle(LED1);
13  } 
14}
15/* USER CODE END 4 */


中斷函數(shù)里面先判斷是否為EXIT線0中斷,如果是則LED1的狀態(tài)翻轉(zhuǎn)。在STM32F7的數(shù)據(jù)手冊(cè)中可以找到下面這張圖。PA0~PK0為EXTI線0中斷。

重新編譯程序,編譯通過(guò)后下載到Open746-C開發(fā)板。如果沒(méi)有錯(cuò)誤,按下一下WAKEUP按鍵LED1的狀態(tài)改變一次。


下面簡(jiǎn)單講解一下中斷程序的運(yùn)行流程。首先main函數(shù)主程序中一直在while循環(huán)里面執(zhí)行。當(dāng)按鍵(PA0引腳)按下時(shí),邊沿檢測(cè)電路檢測(cè)到上升沿,觸發(fā)中斷,設(shè)置中斷標(biāo)識(shí)位。NVIC中斷控制器判斷EXTI0中斷優(yōu)先是否為最高,若為最高優(yōu)先級(jí)則執(zhí)行EXIT0中斷。

再執(zhí)行中斷服務(wù)函數(shù)之前,Contex-M7內(nèi)核先將現(xiàn)在使用到的寄存器和主程序中斷點(diǎn)的地址壓入堆棧(保護(hù)現(xiàn)場(chǎng))。然后程序在中斷向量表中找到EXTI0中斷對(duì)應(yīng)的地址(0x0000 0058)。這個(gè)地址存儲(chǔ)的為EXTI0中斷服務(wù)函數(shù)的口人地址。然后程序轉(zhuǎn)跳到中斷服務(wù)函數(shù)執(zhí)行。

在startup_stm32f746xx.s啟動(dòng)文件中,我們可以找到中斷向量表。

在上面這張表中我們可以看到地址0x0000 0000保存的為棧頂?shù)牡刂贰?x0000 0004地址保存復(fù)位中斷服務(wù)函數(shù)的地址。第22個(gè)中斷為EXTI0中斷,對(duì)應(yīng)的地址為 22x4,即0x0000 0058。


在stm32f7xx_it.c中斷服務(wù)函數(shù)文件中,我們可以找到EXTI0中斷的服務(wù)函數(shù)。

01/**
02* @brief This function handles EXTI line0 interrupt.
03*/
04void EXTI0_IRQHandler(void)
05{
06  /* USER CODE BEGIN EXTI0_IRQn 0 */
07
08  /* USER CODE END EXTI0_IRQn 0 */
09  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
10  /* USER CODE BEGIN EXTI0_IRQn 1 */
11
12  /* USER CODE END EXTI0_IRQn 1 */
13}


中斷服務(wù)函數(shù)里面就調(diào)用了GPIO外部中斷處理函數(shù)HAL_GPIO_EXTI_IRQHandler(),參數(shù)為GPIO_PIN_0,即EXTI0中斷。GPIO外部中斷處理函數(shù)主要就是清除中斷標(biāo)識(shí)位,然后調(diào)用中斷回調(diào)函數(shù)HAL_GPIO_EXTI_Callback()。我們只需重構(gòu)中斷回調(diào)函數(shù),在函數(shù)里面添加我們的應(yīng)用代碼即可(程序中為翻轉(zhuǎn)LED1狀態(tài))。

01/**
02  * @brief  This function handles EXTI interrupt request.
03  * @param  GPIO_Pin: Specifies the pins connected EXTI line
04  * @retval None
05  */
06void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
07{
08  /* EXTI line interrupt detected */
09  if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET)
10  {
11    __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
12    HAL_GPIO_EXTI_Callback(GPIO_Pin);
13  }
14}


執(zhí)行完中斷服務(wù)函數(shù)后。內(nèi)核從堆棧去除壓入的寄存器數(shù)據(jù)恢復(fù)現(xiàn)場(chǎng),取出主程序中斷點(diǎn)的地址,轉(zhuǎn)到到主程序中斷點(diǎn)的地址繼續(xù)運(yùn)行主程序。


OK,到這里就完成一次中斷服務(wù)。簡(jiǎn)單的來(lái)說(shuō),觸發(fā)中斷時(shí),硬件先標(biāo)識(shí)中斷標(biāo)識(shí)位,然后NVIC中斷控制器判斷中斷優(yōu)先級(jí)是否可以執(zhí)行此中斷。執(zhí)行中斷時(shí),先保護(hù)現(xiàn)在程序的狀態(tài),將數(shù)據(jù)保存進(jìn)堆棧中,執(zhí)行完中斷服務(wù)函數(shù)后,再在堆棧中取數(shù)據(jù)回復(fù)現(xiàn)場(chǎng),跳回主程序繼續(xù)運(yùn)行。如果在中斷服務(wù)函數(shù)中有更高優(yōu)先級(jí)的中斷觸發(fā),則也會(huì)將現(xiàn)在的數(shù)據(jù)保存去執(zhí)行更高優(yōu)先級(jí)的中斷服務(wù)函數(shù),即中斷嵌套。高優(yōu)先級(jí)的中斷執(zhí)行完后,恢復(fù)現(xiàn)場(chǎng),繼續(xù)執(zhí)行低優(yōu)先級(jí)的服務(wù)函數(shù)。


通過(guò)本章的講解希望各位更加深入了解中斷的過(guò)程。

關(guān)鍵字:STM32CubeMX系列  外部中斷  EXIT 引用地址:STM32CubeMX系列教程2:外部中斷(EXIT)

上一篇:STM32CubeMX系列教程3:基本定時(shí)器
下一篇:STM32CubeMX系列教程1:GPIO

推薦閱讀

集微網(wǎng)消息(文/羅明),?國(guó)內(nèi)科技媒體鈦媒體在一篇名為《魅族管理層大調(diào)整:楊柘尷尬,黃章焦慮》的文章中指出,魅族經(jīng)過(guò)四次架構(gòu)調(diào)整,白永祥的職務(wù)從被縮減,到最終離職。雖然有煤油問(wèn)白永祥的去向,但是魅族老大黃章回復(fù)的有些含糊,他稱魅友沒(méi)必要關(guān)心魅族的人事問(wèn)題,看來(lái)白永祥留在魅族的可能性很小。除了國(guó)內(nèi)的高管白永祥在魅族去向成迷之外,魅族...
Q:SRC系列核心控制器能用于哪些類別的機(jī)器人?A:它滿足工業(yè)移動(dòng)機(jī)器人、商用移動(dòng)機(jī)器人、自動(dòng)叉車不同應(yīng)用需求。Q:SRC系列核心控制器適配四驅(qū)麥克納姆輪嗎?A:可以適配。SRC系列核心控制器適配雙輪差動(dòng)、前/后驅(qū)單舵輪、三驅(qū)全向、四驅(qū)麥克納姆輪、雙舵輪等多種車型。Q:基于AMB的復(fù)合機(jī)器人和基于AMB的搬運(yùn)機(jī)器人有什么區(qū)別?A:基于AMB的復(fù)合機(jī)器人...
串口,通信方式的一種。串口的數(shù)據(jù)發(fā)送接受單位為字節(jié),一個(gè)字節(jié)即為8位二進(jìn)制數(shù)。對(duì)一個(gè)字節(jié)進(jìn)行發(fā)送時(shí),為一位一位的發(fā)送,先低位后高位。例如十進(jìn)制的9,對(duì)其發(fā)送時(shí),首先將其轉(zhuǎn)化為二進(jìn)制0000 1001。然后按照從低位到高位的發(fā)送順序?yàn)?001 0000。當(dāng)我們?cè)谑静ㄆ骰蚴窃赑rotues仿真中可以看到單片機(jī)的I/O口波形為第一位為0(起始位),最后一位1(結(jié)束...
微容科技作為一家快速發(fā)展的電子元器件制造商、中國(guó)高端MLCC的典型代表企業(yè),由于企業(yè)高端定位特點(diǎn),技術(shù)水平發(fā)展快,前景良好,受到電子行業(yè)供應(yīng)鏈及資本的高度青睞。在6月25-26日第五屆集微半導(dǎo)體峰會(huì)上,微容重點(diǎn)推出了應(yīng)用于芯片封裝內(nèi)及周邊的4類細(xì)分MLCC。其一是(008004、01005)超微型MLCC,具有超小體積,超薄高度,適用芯片內(nèi)封裝的特點(diǎn);其二是...

史海拾趣

問(wèn)答坊 | AI 解惑

8路電子智能搶答器 急!!

要求的模擬的搶答器:1)能容許8組進(jìn)行搶答。2)能顯示搶答組號(hào)。 3)各組記分,并能記分顯示。4)比賽結(jié)束時(shí),能發(fā)出報(bào)警聲。5)能調(diào)節(jié)搶答時(shí)間及回答時(shí)間 用51單片機(jī)設(shè)計(jì)…

查看全部問(wèn)答∨

步進(jìn)電機(jī)

求步進(jìn)電機(jī)資料?用于儀表方面,希望高手指點(diǎn)下!…

查看全部問(wèn)答∨

mobile與電腦通信問(wèn)題

請(qǐng)問(wèn),mobile6.0操作系統(tǒng)的智能手機(jī)與電腦連接時(shí),剛開始時(shí)候,下面有個(gè)網(wǎng)絡(luò)連接顯示,后來(lái)才有個(gè)activesyn連接顯示成功。 當(dāng)mobile6.0與windows連接開始時(shí),好像有個(gè)虛擬網(wǎng)絡(luò)連接,有沒(méi)有這方面的詳細(xì)資料。 小弟不勝感激!!! …

查看全部問(wèn)答∨

兩臺(tái)GPRS撥號(hào)上網(wǎng)的機(jī)器之間通訊問(wèn)題

我現(xiàn)在有兩臺(tái)通過(guò)中國(guó)移動(dòng)的GPRS上網(wǎng)的設(shè)備,一臺(tái)為L(zhǎng)PC2368的嵌入式開發(fā)板,移植好了PPP協(xié)議棧,已經(jīng)成功獲得了中國(guó)移動(dòng)分配的IP地址10.x.x.x,另一臺(tái)筆記本也通過(guò)中國(guó)移動(dòng)GPRS上網(wǎng),也獲得了10.x.x.x的地址,筆記本可以ping到板子,但我分別運(yùn)行在板子上 ...…

查看全部問(wèn)答∨

如何把Delphi7開發(fā)好的程序弄到PDA上?

有一個(gè)用delphi7開發(fā)好的程序,現(xiàn)在想用PDA顯示這個(gè)程序或者程序的結(jié)果,我的PDA的操作系統(tǒng)是 Microsoft Windows Mobile 2003 第二版, 大俠們有什么好的辦法嗎?老師崔的很急,幫幫忙阿?我不知道還有多少分。要不全給你都行…

查看全部問(wèn)答∨

團(tuán)購(gòu)maple已到達(dá),

團(tuán)購(gòu)maple已到達(dá),正在刷bootloader已預(yù)訂的朋友會(huì)明天發(fā)出有一個(gè)電源濾波電容由于后來(lái)給錯(cuò)了尺寸沒(méi)有安上去,但是不會(huì)對(duì)使用產(chǎn)生什么影響~http://item.taobao.com/auction/item_detail.htm?item_num_id=9040823487 結(jié)束日期:2010-2-15…

查看全部問(wèn)答∨

STM32性能很不錯(cuò)

目前我只用到SPI接口,性能真的不錯(cuò),103的spi時(shí)鐘達(dá)到16MHz,DMA時(shí)spi是9MHz比str7優(yōu)秀很多。不過(guò)有點(diǎn)郁悶,為何dma比單字節(jié)寫時(shí)更慢?…

查看全部問(wèn)答∨

STR71xIAPwithinterruptforapplication

                                 版本已更新,請(qǐng)參考后續(xù)跟帖:方法二的新版本1,2,3。  …

查看全部問(wèn)答∨

【MSP430共享】基于神經(jīng)網(wǎng)絡(luò)的汽車動(dòng)態(tài)稱重CCD抓拍雙核系統(tǒng)設(shè)計(jì)

介紹了基于T M S 3 2 0 C 5 41 O D S P和M S P 4 3 O F 1 4 9單片機(jī)相結(jié)合的汽車動(dòng)念稱重雙核系統(tǒng)。 該系統(tǒng)采用了B P神經(jīng)網(wǎng)絡(luò)改進(jìn)算法L e v e n b e r g — M a r q u a r d t法實(shí)現(xiàn)精確稱重, 具有對(duì)超重汽車進(jìn)行C C D抓拍 , 圖像車牌識(shí)別等功能 ...…

查看全部問(wèn)答∨

TI大學(xué)計(jì)劃培訓(xùn)材料-精密信號(hào)鏈部分

本帖最后由 dontium 于 2015-1-23 11:28 編輯 TI大學(xué)計(jì)劃培訓(xùn)材料-精密信號(hào)鏈部分 …

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 当阳市| 洪洞县| 大田县| 永靖县| 普宁市| 集贤县| 钟山县| 兴隆县| 拉萨市| 介休市| 陆良县| 新丰县| 高雄县| 安顺市| 河北省| 孟津县| 高台县| 南靖县| 宁河县| 红安县| 砀山县| 章丘市| 琼海市| 红河县| 古蔺县| 梁河县| 增城市| 丽水市| 家居| 苍南县| 余姚市| 西青区| 舒兰市| 瓮安县| 梓潼县| 黄浦区| 安顺市| 宽城| 泰兴市| 丹寨县| 桓仁|