精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

GD32 MCU是如何進入中斷函數的

聚沃科技 ? 2024-01-30 09:45 ? 次閱讀

用過GD32 MCU的小伙伴們都知道,程序是順序執行的,但當有中斷來的時候程序會跳轉到中斷函數,執行完中斷函數后程序又繼續回到原來的位置繼續執行,那么你們知道MCU是如何找到中斷函數入口的嗎?

今天我們就以GD32F303系列的EXTI0中斷來描述下MCU是如何進入中斷的。

首先來看一個簡單的代碼(以Keil為開發環境):

wKgaomW4VDGAFyaiAAAfPibnKDk317.png

這段程序初始化了兩個LED燈,并將一個按鍵設置為中斷模式,這里用的是PA0,所以中斷號也為0,即EXTI0。

再來看一下中斷函數:

wKgaomW4VDaAdupXAAAWnoUOW2g644.png

中斷函數也很簡單,當有中斷發生的時候,去翻轉一個LED燈狀態。

好,我們通過map文件看下這個中斷函數的地址在哪里(不會的小伙伴可以看看前面的視頻——《如果查看GD32 Keil和IAR工程的map文件》哦):

wKgZomW4VDqABPyOAACQCbjy4Ek810.png

沒錯,中斷函數就保存在0x08000193開始的flash地址中,且該函數占用了24個byte的空間。

正常情況下,程序是不會跳轉到這個地址去執行的,那為什么中斷信號一來,程序就直接跳轉過去了呢?

下面重點來了,小伙伴們要仔細聽哦。

我們來看下GD32F30x系列的啟動文件:

wKgaomW4VD6ADS2fAADLoXDIfoQ299.png

其中用匯編寫了一段代碼:使用DCD指令(DCD指令是為特定的數據分配地址)將棧頂指針__initial_sp和中斷函數分配到flash最開始的地址中去,我們看下flash中的數據:

wKgZomW4VEOAD9rvAAAi9QvSgto772.png

用紅框標注的數據就是程序的棧頂指針,再看下第23個地址也就是0x08000058保存的數據,就是0x08000193,剛好就是中斷函數EXTI0_IRQHandler的入口。

wKgaomW4VEiAaBuQAABOuZMOjhw295.png

實際上,flash最開始保存的這一段數據有個專有名詞——中斷向量表,可以通過GD32F30x的用戶手冊查到:

wKgZomW4VEyAHXe6AAF0WLqIdDU814.png

注意:因為向量編號是從0開始的(0號即為棧頂指針),所以EXTI0的中斷編號為22,也就存在flash第23個地址(按字對齊)中。

當有EXTI0中斷發生,MCU會知道是22號中斷來了,內部總線就會去查flash最開始地址中的中斷向量表,找到第23個地址(0x08000058),并取得里面的數據也就是中斷函數的入口,然后就跳轉到中斷函數中執行程序了。

本期視頻內容會有點繞,小伙伴們可以多看幾遍哦,了解MCU是如何進入中斷函數對于平時的開發是非常有用的,如果有不懂的小伙伴,歡迎評論區留言討論哦。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6032

    文章

    44525

    瀏覽量

    633258
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17019

    瀏覽量

    350373
  • 嵌入式
    +關注

    關注

    5072

    文章

    19026

    瀏覽量

    303516
  • GD32
    +關注

    關注

    7

    文章

    403

    瀏覽量

    24235
收藏 人收藏

    評論

    相關推薦

    GD32 MCU 入門教程】GD32 MCU 常見外設介紹(12)FMC 模塊介紹

    閃存控制器(FMC),提供了片上閃存需要的所有功能。FMC 也提供了頁擦除,整片擦除,以及32 位整字或 16 位半字編程閃存等操作。 GD32 MCU 支持不同類型編程的具體說明如下表 GD32
    的頭像 發表于 08-21 09:56 ?1000次閱讀
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 入門教程】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 常見外設介紹(12)FMC 模塊介紹

    GD32 MCU是如何進入中斷函數的?#GD32 #MCU #中斷函數

    單片機mcu
    聚沃科技
    發布于 :2024年01月31日 09:49:37

    GD32的外部中斷介紹

    起因介紹因為公司之前用GD32F4和周立功的CSM300產品的一個SPI轉CAN模塊,做了個產品,其在收到CAN幀時INT引腳會為由高電平轉為低電平。需要做一個中斷接收的程序防止丟包。GD32的外部
    發表于 08-16 08:36

    GD32 MCU原理及固件庫開發指南》+讀后感

    、調試工具,再到庫函數的使用、各個外設的程序實現,不僅有原理的介紹,還有實踐的歷程。這本書聚焦在GD32 MCU基本原理和固件庫上,重點在于對固件庫API的介紹,供了大量實例代碼,這些代碼都可以直接編譯
    發表于 06-06 21:52

    GD32系列外部中斷

    起因介紹因為公司之前用GD32F4和周立功的CSM300產品的一個SPI轉CAN模塊,做了個產品,其在收到CAN幀時INT引腳會為由高電平轉為低電平。需要做一個中斷接收的程序防止丟包。GD32的外部
    發表于 11-24 17:06 ?14次下載
    <b class='flag-5'>GD32</b>系列外部<b class='flag-5'>中斷</b>

    推出采用GD32 RISC-V的MCU

    推出采用GD32 RISC-V的MCU ppt分享
    發表于 07-14 17:15 ?0次下載

    兆易創新GD32 MCU選型手冊,適用于GD32全系列MCU

    兆易創新GD32MCU選型手冊,適用于GD32全系列MCUGD32MCU選型手冊,適用于GD32全系列MCU
    發表于 10-19 17:26 ?49次下載

    GD32如何配置中斷優先級分組以及中斷優先級

    使用GD32 MCU的過程中,大家可能會有以下疑問:中斷優先級如何配置和使用?
    的頭像 發表于 01-10 10:30 ?2956次閱讀
    <b class='flag-5'>GD32</b>如何配置<b class='flag-5'>中斷</b>優先級分組以及<b class='flag-5'>中斷</b>優先級

    你了解GD32 MCU的命名規則嗎

    下面為大家介紹GD32 MCU的通用命名規則,以GD32F303ZGT6為例,其中,GD32代表GD32
    的頭像 發表于 01-13 09:38 ?3463次閱讀
    你了解<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>的命名規則嗎

    GD32 MCU啟動后如何運行到main函數

    GD32 MCU啟動后如何運行到main函數入口?你是否也有這樣的疑慮。在執行到main函數之前MCU干了哪些事情呢?下面為大家解答。
    的頭像 發表于 01-15 10:00 ?1030次閱讀
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>啟動后如何運行到main<b class='flag-5'>函數</b>

    GD32 MCU的選項字節是什么?

    GD32 MCU的選項字節是什么,有什么功能呢?選項字節被誤篡改如何回復?
    的頭像 發表于 01-17 09:42 ?1280次閱讀
    <b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>的選項字節是什么?

    不同型號的GD32 MCU如何區分?

    大家是否碰到過以下應用場景:同一套軟件代碼希望跑在不同型號的GD32 MCU中,但有些地方需要根據MCU型號進行調整?或者上位機或其他MCUGD3
    的頭像 發表于 01-27 09:32 ?965次閱讀
    不同型號的<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>如何區分?

    GD32 MCU 入門教程】GD32 MCU 常見外設介紹(14)RTC 模塊介紹

    GD32 MCU內部提供了一個RTC(實時時鐘)模塊,通過RTC可以實現日歷時鐘、鬧鐘等功能。RTC也可以用于深度睡眠或待機模式的低功耗喚醒。不同系列的GD32 MCU在RTC設計和功
    的頭像 發表于 08-23 09:18 ?392次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 入門教程】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 常見外設介紹(14)RTC 模塊介紹

    GD32 MCU 入門教程】GD32 MCU FPU 使用方法

    GD32 MCU FPU 使用方法
    的頭像 發表于 08-25 09:24 ?478次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> 入門教程】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> FPU 使用方法

    GD32 MCU入門教程】GD32 MCU GPIO 結構與使用注意事項

    本文是專門為基于GD32 MCU開發的工程設計人員提供,主要介紹了GPIO的功能配置、內部結構以及在不同場景使用時的注意事項,旨在幫助GD32 MCU開發者優化對通用型輸入輸出端口(G
    的頭像 發表于 09-07 10:34 ?609次閱讀
    【<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b>入門教程】<b class='flag-5'>GD32</b> <b class='flag-5'>MCU</b> GPIO 結構與使用注意事項