为什么退出一个函数时会产生 Usage Fault?

2019-03-24 16:02发布

一个朋友说程序死机,拿过来仿真,发现在退出某函数时就产生了一个 Usage Fault:
试图在无效的 ISA 状态中执行指令。例如,不是thumb    试图在无效的 EPSR 状态中执行,例如,在BX类型指令改变状态之后。这包括从异常中返回之后的状态。 
不明白。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
历史的天空
1楼-- · 2019-03-25 03:22
能描述的再详细一些吗
tekkon
2楼-- · 2019-03-25 09:17
< :TI_MSP430_内容页_SA7 --> Usage Fault:  包括执行的指令非法使用EPSR寄存器,错误进入中断向量表,除以0等操作都会引起

这是对于产生Usage Fault 的分析:  The processor has attempted to execute an instruction that makes illegal use of the Execution Program Status Register (EPSR).  Potential reasons: a) Loading a branch target address to PC with LSB=0. b) Stacked PSR corrupted during exception or interrupt handling. c) Vector table contains a vector address with LSB=0.

可以通过查看存储在栈寄存器里的PC值找到产生这个fault的指令    不过比较常见的原因包括 stack corruption  可以试着增加栈的大小来解决

http://www.keil.com/appnotes/files/apnt209.pdf     可以仔细读一下这个文章  后半部分教你怎么排除这些fault

希望有用!
academic
3楼-- · 2019-03-25 10:10
 精彩回答 2  元偷偷看……
academic
4楼-- · 2019-03-25 14:15
现在初步判断问题是出在 ADC 的触发方式上,9b90 好像不能使用一直触发,
ADCSequenceConfigure(ADC0_BASE,0, ADC_TRIGGER_ALWAYS,0);
而 811 却可以用。

一周热门 更多>

相关问题

    相关文章