求教: 如何清除BusFault状态?

2019-12-10 18:14发布

读取地址越界, 需要程序判断出错误, 报错后继续正常运行.

现在是会进入BusFault中断, 在BusFault_Handler里清除了SCB->CFSR的PRICISERR位, 但还是不断重复进入BusFault中断. 请问怎么恢复到正常执行状态呢...
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
chencc8
1楼-- · 2019-12-10 21:46
 精彩回答 2  元偷偷看……
tomzbj
2楼-- · 2019-12-11 00:40
chencc8 发表于 2019-9-30 10:19
那就在读取地址之前,先判断地址有没有越界。比如在带有这个读取地址操作的函数里,对传入的地址参数进行判 ...

其实是这样, 一哥们做了个通用的bootloader, 在里面实现了读取任意地址之类的功能. 不过他在商业产品上用的, 我没法拿来用, 于是打算自己实现一遍.
因为要在不同型号的MCU上运行, 没法事先知道外设地址之类是否合法, 所以只能是进BusFault了再清除.

没关系, 我暂时做成进BusFault了先输出错误信息, 然后直接NVIC_SystemReset, 也算是解决问题了.
huangqi412
3楼-- · 2019-12-11 04:39
tomzbj 发表于 2019-9-30 10:44
其实是这样, 一哥们做了个通用的bootloader, 在里面实现了读取任意地址之类的功能. 不过他在商业产品上用 ...

不同单片机地址范围不同  可以查表判断合法
错误复位简单粗暴也挺好 让使用的人长记性别乱输入
tomzbj
4楼-- · 2019-12-11 05:24
huangqi412 发表于 2019-9-30 13:54
不同单片机地址范围不同  可以查表判断合法
错误复位简单粗暴也挺好 让使用的人长记性别乱输入 ...

别的地方都可以查表, 就这个地方不行. bootloader对尺寸要求高, 8k怎么也是上限了.
huangqi412
5楼-- · 2019-12-11 07:14
tomzbj 发表于 2019-9-30 14:29
别的地方都可以查表, 就这个地方不行. bootloader对尺寸要求高, 8k怎么也是上限了. ...

复位让他别乱输入,也挺好。
huangqi412
6楼-- · 2019-12-11 09:30
 精彩回答 2  元偷偷看……

一周热门 更多>