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

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

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

3天內不再提示

AURIX Development Studio中的中斷處理函數實現

LI1323882 ? 來源:MCU頻道 ? 2023-04-19 09:27 ? 次閱讀

TriCore中斷向量表

由圖1可知,TriCore中的BIV寄存器(Base Interrupt Vector Table Pointer )指向中斷向量表的入口地址,中斷向量大小可設置為32或者8字節,由BIV.VSS位決定。
不同優先級中斷向量所對應的地址,可經下方公式計算可得。

if(BIV.VSS==1’b0)
ISR_Entry_PC={BIV[31:1],1’b0}|{PIPN<<5};
else
ISR_Entry_PC?=?{BIV[31:1],1’b0}?|?{PIPN<<3};

4cbb94a4-ddec-11ed-bfe3-dac502259ad0.pngFig1

中斷定義與實現

使用ADS (AURIX Development Studio) 導入SMU_IR_Alarm工程為例,打開SMU_IR_Alarm.c可以發現是宏IFX_INTERRUPT(isr, vectabNum, prio)用來定義中斷處理函數IFX_INTERRUPT(ISR_SMU_Alarm, 0, ISR_PRIORITY_SMU_INT0)。

#defineIFX_INTERRUPT(isr,vectabNum,prio)IFX_INTERRUPT_INTERNAL(isr,vectabNum,prio)
#defineIFX_INTERRUPT_FAST(isr,vectabNum,prio)void__interrupt_fast(prio)__vector_table(vectabNum)isr(void)

編譯后,查看MAP文件可知ISR_SMU_Alarm函數存放于0x80001a82,

4cea03de-ddec-11ed-bfe3-dac502259ad0.pngFig2

通過上面的公式計算優先級ISR_PRIORITY_SMU_INT0(10)中斷向量的地址為0x802fe140 = 0x802fe000 |(0xa << 5) 。
在優先級ISR_PRIORITY_SMU_INT0(10)中斷觸發后,TriCore中的PC指針會變成0x802fe140,并執行中斷向量中的匯編指令使得PC指針跳轉到中斷函數ISR_SMU_Alarm中運行。

4d09aee6-ddec-11ed-bfe3-dac502259ad0.pngFig3

CSA運行機制圖解

進入ISR_SMU_Alarm中斷處理函數時,PCXI,FCX寄存器由于要保存CSA而變化如下,

4d24d6f8-ddec-11ed-bfe3-dac502259ad0.pngFig4 Enter Interrupt

同時CSA鏈表結構也需相應的調整。

4d4a570c-ddec-11ed-bfe3-dac502259ad0.pngFig4 進入中斷處理函數時的CSA鏈表

當退出ISR_SMU_Alarm中斷處理函數后,PCXI,FCX寄存器會恢復,如下所示,

4d6c4358-ddec-11ed-bfe3-dac502259ad0.pngFig5 Exit Interrupt

CSA鏈表結構也會跟著變化。

4d97da40-ddec-11ed-bfe3-dac502259ad0.pngFig6 退出中斷處理函數時的CSA鏈表

可以發現在進入中斷處理函數后,Upper CSA和Lower CSA雙雙被保存,小編在《TriCore的CSA機制介紹》提到過Upper CSA為硬件自動保存,而Lower CSA需要開發者自己手動保存的,但是查看ISR_SMU_Alarm中斷處理函數代碼,并沒有發現保存Lower CSA的代碼,那到底是怎么一回事呢?

voidISR_SMU_Alarm(void)
{
IfxSmu_clearAlarmStatus(IfxSmu_Alarm_Software_Alarm0);/*Clearalarmstatusflag*/
IfxSmu_clearAlarmExecutedStatus(IfxSmu_AlarmExecutionStatus_irq0);/*ClearAlarmExecutionStatusregisterbit*/

IfxPort_setPinState(LED,IfxPort_State_low);/*TurnonLED(LEDislow-levelactive)*/
}

其實這跟編譯器有關,在實際使用時,Tasking編譯器會為中斷和Trap自動生成svlcx保存Lower CSA,如ISR_SMU_Alarm中斷處理函數對應的匯編指令所示。

4dc156c2-ddec-11ed-bfe3-dac502259ad0.pngFig7 中斷處理函數的匯編指令

總結

在本文中,小編介紹了在ADS (AURIX Development Studio)中如何定義中斷處理函數,并解釋了中斷發生時的PC指針跳轉過程和CSA鏈表結構變化,希望對小伙伴能有所幫助,最后再提醒一下,在開發過程,針對相同CPU,避免對同一中斷優先級定義不同的中斷處理函數。

審核編輯:湯梓紅

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

    關注

    31

    文章

    5317

    瀏覽量

    120008
  • 中斷
    +關注

    關注

    5

    文章

    895

    瀏覽量

    41394
  • 函數
    +關注

    關注

    3

    文章

    4306

    瀏覽量

    62430
  • 指針
    +關注

    關注

    1

    文章

    480

    瀏覽量

    70510
  • TriCore
    +關注

    關注

    0

    文章

    15

    瀏覽量

    11737
  • Aurix
    +關注

    關注

    1

    文章

    71

    瀏覽量

    10896

原文標題:AURIX Development Studio中的中斷處理函數實現

文章出處:【微信號:MCU頻道,微信公眾號:MCU頻道】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    無法在AURIX? Development Studio調試freeRTOS任務怎么解決?

    我們正在開發 AURIX? TriCore? TC389 控制器。 你能否建議需要使用哪個 RTOS 以及首選 IDE調試器來進行開發過程? 此外,我無法在 AURIX? Development
    發表于 01-18 07:41

    使用Aurix Development Studio編譯總報錯的原因?怎么處理

    最新安裝了英飛凌的免費編譯器Aurix Development Studio,里面自帶iLLD,但是首次編譯總報錯,如下: cannot open #include file "
    發表于 01-29 06:04

    使用AURIX DEVELOPMENT STUDIO的debug時,呈現錯誤沒有找到DAS是為什么?

    在使用AURIX DEVELOPMENT STUDIO的調試功能時,呈現錯誤:找不到DAS。可是我已經安裝了DAS,并且可以配合memtool下載程序,為什么會出現調試錯誤,是因為版本不匹配嗎?我用的是
    發表于 02-02 07:31

    請問AURIX? Development Studio如何生成bin文件?

    請大神們賜教,AURIX? Development Studio如何生成bin文件?
    發表于 02-02 08:27

    AURIX Development Studio支持在線調試自制的最小系統嗎?

    AURIX Development Studio支持在線調試自制的最小系統嗎?看到的都是調試英飛凌官方的board,沒見到其他的。
    發表于 02-19 07:48

    AURIX? Development Studio使用HighTec的gcc,無法生成.map的原因?

    您好, 目前, AURIX? Development Studio 使用 HighTec 的 gcc,可以生成 .hex, 但無法生成 .map
    發表于 02-27 06:33

    AURIX? Development studio燒錄失敗的原因?

    當我使用AURIX? Development studio進行編譯和燒錄時,構建已完成,但燒錄失敗。 錯誤在于捕獲。 您知道如何解決這個問題嗎? 我不知道什么是 DUT。
    發表于 03-05 06:42

    Aurix development studio是否支持GCC調試器?

    當我嘗試使用 Aurix development studio 調試 Aurix 示例時,我發現只有兩個選項 TASKING C/C++ 調試器 winIDEA 調試器 我的問題是,G
    發表于 05-20 06:57

    aurix development studio無法調試,圖標為灰色如何解決?

    aurix development studio 無法調試,圖標為灰色。 如何解決這個問題?
    發表于 05-20 08:22

    Aurix Development Studio的某些函數(AppInit()、 blinkLED()、 NvmInit())會阻止runShellInterface() 的執行 ,為什么?

    我在 Aurix Development Studio 遇到了一個問題,其中包含的某些函數(AppInit()、 blinkLED()、
    發表于 05-22 07:41

    aurix development studio調試代碼時,導致調試中斷的原因?

    當我用 aurix development studio 調試代碼時,總是出現嚴重錯誤,導致調試中斷,我不得不重啟 studio,然后重新開
    發表于 06-03 08:11

    如何安裝AURIX? Development Studio

    AURIX? Development Studio 安裝使用問題安裝文件下載軟件安裝軟件使用設置工作文件夾/Workspace查看幫助/Help文檔編譯/Build調試/Debug調試技巧實用資源
    發表于 01-27 08:16

    AURIX Development Studio的使用方法

    本文主要介紹AURIX Development Studio軟件的安裝和使用方法。英飛凌針對Tricore系列單片機推出了一款免費的軟件——AURIX?
    發表于 01-27 07:07

    解決ADS(AURIX Development Studio)程序下載失敗的問題

    ADS(AURIX Development Studio)下載到TC264板子,程序可以編譯成功,但是下載失敗。經檢測DAS驅動正常,下圖為DAS檢測單片機步驟:1.打開DAS Scanner,點擊
    發表于 11-24 18:21 ?31次下載
    解決ADS(<b class='flag-5'>AURIX</b> <b class='flag-5'>Development</b> <b class='flag-5'>Studio</b>)程序下載失敗的問題

    AURIX? Development Studio 安裝使用

    AURIX? Development Studio 安裝使用
    發表于 12-03 16:21 ?14次下載
    <b class='flag-5'>AURIX</b>? <b class='flag-5'>Development</b> <b class='flag-5'>Studio</b> 安裝使用