- 博客(2)
- 收藏
- 关注
原创 记录一次hardfault 原因查找
6、回归问题本身 Cannot access Memory (@ 0xfffffffc, Read, Acc Size: 4 Byte)就是说还是访问不允许访问的地址才出现的错误,即、只是恰好在这个函数时用到了那个地址导致问题发生,数据本省已经被更改,只是在BSP_OS_TimeDly函数中刚好用到了那个flash数据导致出现hardfault;3、打开memory 查看此地址0x20002ED8 ,打开一看全是零 ,一脸懵逼,pendsv优先级有问题,继续跟进发现自己的设置没问题,至此思路完全没有,
2024-02-29 18:08:45
780
原创 中断接收的全局变量赋值给局部变量,有时会出现赋错值的情况
此时r0里面的值为0,在中断时r0值为串口接收的数据,这个地方直接使用r0通用寄存器的值,赋值给r1的地址,导致赋值出错。现象:串口接收中断函数, 定义全局变量uctemp 接收返回数据,数据能接收到。1、中断接收变量 使用关键字volatile,直接取全局变量uctemp变量值再去赋值可以正确赋值,汇编中会加一步取值操作;2、降低优化等级,也可以正确赋值,不过这样会造成每一步程序解析成汇编的指令多几步造成时间浪费;另外,在系统中,使用全局变量,最好使用保护全局变量的方法,否则也会造成数据赋值异常。
2023-08-01 09:22:38
1144
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅