一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

AURIX Development Studio中的中斷處理函數(shù)實(shí)現(xiàn)

LI1323882 ? 來(lái)源:MCU頻道 ? 2023-04-19 09:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

TriCore中斷向量表

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

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

中斷定義與實(shí)現(xiàn)

使用ADS (AURIX Development Studio) 導(dǎo)入SMU_IR_Alarm工程為例,打開(kāi)SMU_IR_Alarm.c可以發(fā)現(xiàn)是宏IFX_INTERRUPT(isr, vectabNum, prio)用來(lái)定義中斷處理函數(shù)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函數(shù)存放于0x80001a82,

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

通過(guò)上面的公式計(jì)算優(yōu)先級(jí)ISR_PRIORITY_SMU_INT0(10)中斷向量的地址為0x802fe140 = 0x802fe000 |(0xa << 5) 。
在優(yōu)先級(jí)ISR_PRIORITY_SMU_INT0(10)中斷觸發(fā)后,TriCore中的PC指針會(huì)變成0x802fe140,并執(zhí)行中斷向量中的匯編指令使得PC指針跳轉(zhuǎn)到中斷函數(shù)ISR_SMU_Alarm中運(yùn)行。

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

CSA運(yùn)行機(jī)制圖解

進(jìn)入ISR_SMU_Alarm中斷處理函數(shù)時(shí),PCXI,F(xiàn)CX寄存器由于要保存CSA而變化如下,

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

同時(shí)CSA鏈表結(jié)構(gòu)也需相應(yīng)的調(diào)整。

4d4a570c-ddec-11ed-bfe3-dac502259ad0.pngFig4 進(jìn)入中斷處理函數(shù)時(shí)的CSA鏈表

當(dāng)退出ISR_SMU_Alarm中斷處理函數(shù)后,PCXI,F(xiàn)CX寄存器會(huì)恢復(fù),如下所示,

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

CSA鏈表結(jié)構(gòu)也會(huì)跟著變化。

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

可以發(fā)現(xiàn)在進(jìn)入中斷處理函數(shù)后,Upper CSA和Lower CSA雙雙被保存,小編在《TriCore的CSA機(jī)制介紹》提到過(guò)Upper CSA為硬件自動(dòng)保存,而Lower CSA需要開(kāi)發(fā)者自己手動(dòng)保存的,但是查看ISR_SMU_Alarm中斷處理函數(shù)代碼,并沒(méi)有發(fā)現(xiàn)保存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)*/
}

其實(shí)這跟編譯器有關(guān),在實(shí)際使用時(shí),Tasking編譯器會(huì)為中斷和Trap自動(dòng)生成svlcx保存Lower CSA,如ISR_SMU_Alarm中斷處理函數(shù)對(duì)應(yīng)的匯編指令所示。

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

總結(jié)

在本文中,小編介紹了在ADS (AURIX Development Studio)中如何定義中斷處理函數(shù),并解釋了中斷發(fā)生時(shí)的PC指針跳轉(zhuǎn)過(guò)程和CSA鏈表結(jié)構(gòu)變化,希望對(duì)小伙伴能有所幫助,最后再提醒一下,在開(kāi)發(fā)過(guò)程,針對(duì)相同CPU,避免對(duì)同一中斷優(yōu)先級(jí)定義不同的中斷處理函數(shù)。

審核編輯:湯梓紅

聲明:本文內(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)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5435

    瀏覽量

    124602
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    905

    瀏覽量

    42826
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64944
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    484

    瀏覽量

    71207
  • TriCore
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    11942
  • Aurix
    +關(guān)注

    關(guān)注

    1

    文章

    74

    瀏覽量

    11352

原文標(biāo)題:AURIX Development Studio中的中斷處理函數(shù)實(shí)現(xiàn)

文章出處:【微信號(hào):MCU頻道,微信公眾號(hào):MCU頻道】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    無(wú)法在AURIX? Development Studio調(diào)試freeRTOS任務(wù)怎么解決?

    我們正在開(kāi)發(fā) AURIX? TriCore? TC389 控制器。 你能否建議需要使用哪個(gè) RTOS 以及首選 IDE調(diào)試器來(lái)進(jìn)行開(kāi)發(fā)過(guò)程? 此外,我無(wú)法在 AURIX? Development
    發(fā)表于 01-18 07:41

    使用Aurix Development Studio編譯總報(bào)錯(cuò)的原因?怎么處理?

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

    使用AURIX DEVELOPMENT STUDIO的debug時(shí),呈現(xiàn)錯(cuò)誤沒(méi)有找到DAS是為什么?

    在使用AURIX DEVELOPMENT STUDIO的調(diào)試功能時(shí),呈現(xiàn)錯(cuò)誤:找不到DAS??墒俏乙呀?jīng)安裝了DAS,并且可以配合memtool下載程序,為什么會(huì)出現(xiàn)調(diào)試錯(cuò)誤,是因?yàn)榘姹静黄ヅ鋯幔课矣玫氖?/div>
    發(fā)表于 02-02 07:31

    請(qǐng)問(wèn)AURIX? Development Studio如何生成bin文件?

    請(qǐng)大神們賜教,AURIX? Development Studio如何生成bin文件?
    發(fā)表于 02-02 08:27

    AURIX Development Studio支持在線調(diào)試自制的最小系統(tǒng)嗎?

    AURIX Development Studio支持在線調(diào)試自制的最小系統(tǒng)嗎?看到的都是調(diào)試英飛凌官方的board,沒(méi)見(jiàn)到其他的。
    發(fā)表于 02-19 07:48

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

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

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

    當(dāng)我使用AURIX? Development studio進(jìn)行編譯和燒錄時(shí),構(gòu)建已完成,但燒錄失敗。 錯(cuò)誤在于捕獲。 您知道如何解決這個(gè)問(wèn)題嗎? 我不知道什么是 DUT。
    發(fā)表于 03-05 06:42

    Aurix development studio是否支持GCC調(diào)試器?

    當(dāng)我嘗試使用 Aurix development studio 調(diào)試 Aurix 示例時(shí),我發(fā)現(xiàn)只有兩個(gè)選項(xiàng) TASKING C/C++ 調(diào)試器 winIDEA 調(diào)試器 我的問(wèn)題是,G
    發(fā)表于 05-20 06:57

    aurix development studio無(wú)法調(diào)試,圖標(biāo)為灰色如何解決?

    aurix development studio 無(wú)法調(diào)試,圖標(biāo)為灰色。 如何解決這個(gè)問(wèn)題?
    發(fā)表于 05-20 08:22

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

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

    aurix development studio調(diào)試代碼時(shí),導(dǎo)致調(diào)試中斷的原因?

    當(dāng)我用 aurix development studio 調(diào)試代碼時(shí),總是出現(xiàn)嚴(yán)重錯(cuò)誤,導(dǎo)致調(diào)試中斷,我不得不重啟 studio,然后重新開(kāi)
    發(fā)表于 06-03 08:11

    如何安裝AURIX? Development Studio

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

    AURIX Development Studio的使用方法

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

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

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

    AURIX? Development Studio 安裝使用

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