对于M3系列的芯片,查找硬件错误中断的方法: 出现问题时排查的方法: 发生异常之后可首先查看LR寄存器中的值,确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。由于异常发生时,内核将R0~R3、R12、LR、PC、XPRS寄存器依次入栈,其中LR即为发生异常前PC将要执行的下一条指令地址。 注意:寄存器均是32位,且STM32是小端模式。(参考Cortex-M3权威) DEBUG如下图 SP值为0x20008560,查看堆栈里面的值依次为R0~R3、R12、LR、PC、XPRS, 例如R0(10 27 00 00), 显然堆栈后第21个字节到24字节即为LR,该地址0x08001FFD即为异常前PC将要执行的下一条指令地址(即StackFlow()后面的语句处 RCC->CR &= (uint32_t)0xFFFBFFFF)
通过查看硬件错误中断时寄存器的值来判定错误出现的位置。 上面这是M3的方式,但是这样的方式在M4或M7同样适用么?我没找到相关的权威指南来支持此种方式。 对于M4,M7各位你们是怎么查找硬件错误中断的呢? |
怎么监听触摸动作松开?
USB HS 怎样测试眼图?
STM32F767 LWIP无法ping通
touchgfx添加文字不能显示,直接死(HardFault_Handler)
求问诡异的问题,eth网口ping不通
STM32F745: PDR必须直连VDD或VSS吗?
STM32F765 3.3V和GND短路
stm32f723iek6
请问 Stm32 哪款芯片比较适合跑ai?
STM32F769I-DISCO各种板载芯片的引脚图应该去哪找,数据手册上好像没看到?
理论上只要知道LR的值就可以大概定位出错位置了吧
但是我通过这样的方式也是没法
__asm void wait()
{
BX lr
}
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
wait();
}
在线调试时在wait函数打断点,运行到这时单步进入,可是一直提示内存访问不到cannot access memory
这个就无从帮忙了!!!