Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
1、SPI HardFault的进入愿因有哪些? 硬件错误? 目前通信时偶发HardFault
2、硬件错误是否可以不进入HardFault导致软件复位,有什么清除错误的方法?
产生hardfault的原因可以通过SCB寄存器获取。然后根据发生错误的地址和调用栈去定位问题发生的原因。SPI通信过程中产生的错误本身不会导致core进hardfault
HardFault_Handler 这个函数进来的,是指硬件错误吗? SCB需要打印什么信息,帮忙参考一下
HFSR, UFSR, BFSR, MMFSR, BFAR, SHCSR
Frank HFSR=0x40000000 CFSR=0x00008200 UFSR=0 BFSR=0x00008200 MMFSR=0 BFAR=0xE000ED38 SHCFR=0x00010004
对照map 看下地址0xE000ED38做了什么
截图吧,0xE000ED38地址就是BFAR寄存器的地址。你应该是哪里搞错了
Frank BFAR = 0x20010000 map里没有这个地址,这个地址不在ram也不在flash BFSR的BFARVALID为有效,但是BFAR的地址都不在flash范围内?
看起来有个野蛮生长的指针,自己查一下现在有哪些指针,或者数组越界的
Diga BFAR = 0x20010000 这个地址是什么情况,都不在map里 目前测试发现和SPI这边有很大的关联,接入一个异常的SPI从机立马进入hardfault,不接就不会进入 SPI脚电压异常可能会导致hardfault吗? 比如瞬间过大电压
static 的变量有可能不在map中显示,但是这个地址是精确错误,你查找下就可以基本能定位出来了。根据你的描述,建议排查spi的接收和发送buffer
Frank Diga 谢谢两位,大概已经定位是spi这边的数组越界
发帖前请查看
帮助没办法联网的电脑使用YCT
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...