初级会员

- 积分
- 128
- 金钱
- 128
- 注册时间
- 2019-4-13
- 在线时间
- 34 小时
|
10金钱
本帖最后由 hyuxi2005 于 2020-11-22 14:22 编辑
0 进入HardFault_Handler异常处理,打印信息如下:
Enter HardFault_Handler, System Halt.
------ DUMP STACK INFO ------
SCB_HFSR = 0x0840000000
Forced Hard Fault
SCB->CFSR = 0x00000100
Bus fault:
R0 = 0x00000000
R1 = 0x00000002
R2 = 0x20000290
R3 = 0x40013804
R12 = 0x12121212
LR [R14] = 0x0800512f subroutine call return address
PC [R15] = 0x80000000 program counter
PSR = 0x60000000
SCB_SHCSR = 0x00000000
SHCSR = 0x00000000r
BFAR = 0xe000ed38
CFSR = 0x00000100
HFSR = 0x40000000
DFSR = 0x00000000
AFSR = 0x00000000
------ DUMP STACK FINISH ------
感觉程序死在此处
1 芯片 STM32F103C8T6,stm32 std库
STM32F10X-StdPeriph-master.zip
(293.66 KB, 下载次数: 3)
|
最佳答案
查看完整内容[请看2#楼]
可能是堆栈问题导致的,寄存值不对是因为函数调用时会冲掉PC等寄存器的值,增加 hard default 汇编接口实现,参考cm_backtrace,并集成他的C文件
现在模拟软件异常都没问题,可以拿到正确的寄存器值
程序修改如下:
运行效果如下:
通过工具可以定位到代码文件与行
调试模式定位问题如下步骤:
1
2
3
|