原创
转载请注明出处,侵权必究。
一、查看变量
在变量上右键,并添加到watch即可
二、SP追踪错误
1.1 描述
硬件出现了非法的存储器访问(访问0地址、写只读寄存器、堆栈溢出)和非法的程序行为(除以0等)会出现进入HardFault_Handler
1.2 SP追踪错误
1、将SP的数值复制到memory的Address
2、查看第21到24个字节的数字
这四个字节的数字即为进入handler前运行的代码地址。因为堆栈以此放入R0~R3、R12、PC(Return address)、xPSR(CPSR或SPSR)、LR。
由于小端模式,所以这几个数字要倒着放。比如00 21 00 08地址为0x08002100。也可以直接将memory 设置成long型(原来是char型)。
3、根据上一个PC找到代码
在ASM代码右键,点击show disassembbly at address…,将2中得到的地址复制到里面go to
三、根据fault reports判断错误
具体的错误类型参考Keil官网:http://www.keil.com/support/man/docs/uv4/uv4_cp_m347_faults.htm
四、根据RCC_CSR判断上次复位的方式
Debug时,peripheral ---》 寄存器状态,可以一边更新RCC寄存器的数值一边Debug。
具体的复位方式对应什么位可以参考STM32的芯片参考手册。
欢迎关注我的微信公众号
互联网矿工