This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28379D: illegal ISR() 問題

Part Number: TMS320F28379D

使用CCS12.2.0.00009 版本, 燒錄工具使用Hlackhawk USB V2 System Trace

每次一Run 到

EALLOW;
PieVectTable.EPWM1_INT = &MainISR;   
EDIS;

此命令後 , 就會跳到 illegal ISR(), 是否與使用Stack Size 有關, 或者還是有其他想法

  • 你好,我查看下相关资料后回复您。

  • 關於上述問題, 我將一些Code Disable, 然後重新編譯, 使得MainISR 降低至50%, 結果還是一樣, 所以往別的方向去思考

    以下是我的專案, 關於此中斷的結構

    就是

    (1) 主程式做中斷初始化

    (2) 一Run到INIT_ISR 內PieVectTable.EPWM1_INT=&Main_ISR, 立即出現illegal_ISR(),

    看看哪裡有問題?

  • 一般跑进illegal_ISR()是因为CPU读到了非法指令,

    是否與使用Stack Size 有關,

    也可能是堆栈溢出的原因

  • 在中斷向量程式內, 重新設定PieVectTable 會有影響嗎?? 例如PieVectTable.EPWM1_INT= &a, 然後因中斷產生在a 程式內執行,

    結果在a程式內, 某地方又將PieVectTable.EPWM1_INT= &b, 期待下次中斷產生可以直接在b 程式執行, 這樣可以嗎?

  • 应该是不可以的,PIE中断向量应该在初始化就设定好,并在程序中不能更改它。

    你的调试结果也验证了这一点。

x 出现错误。请重试或与管理员联系。