STM32F103_HardFault_Handler_问题
本帖最后由 野马-425178 于 2015-7-31 18:26 编辑问题描述:
由于应用需求,采用最低优先级的定时器作为端口数据处理handle,大概如下:
定义串口1优先级为5,
串口2优先级为6,
数据处理定时器TIM5优先级为7,初始化后以100ms产生周期性定时中断;
STM32接收到串口数据后分别压入到对应端口的环形队列中,
然后调用软件触发函数TIM_GenerateEvent(TIM5, TIM_EventSource_Update)以便加快进入TIM5中断,
使数据得以及时解析;
现在遇到的情况是:
STM32初始化完毕后立即通过串口2通知PC, PC接收到通知后立即发送100多字节的RSA加密或解密指令(加解密函数阻塞消耗的时间大概是1s)给STM32,
STM32在TIM5中断中处理加解密函数,处理完毕后再从串口2返回加解密结果给PC, 这时必然出现HardFault_Handler;
通过简单加大堆栈空间似乎可以解决,
但我无法根据下面的现场数据确定堆栈就是确定而且唯一的原因,
请大神帮忙分析下面的现场数据, 感谢!
stacked_r0 = 0x18052D08
stacked_r1 = 0x00000000
stacked_r2 = 0x40004400
stacked_r3 = 0x00000080
stacked_r12 = 0x00000000
stacked_lr = 0x0800903D
stacked_pc = 0x0801CE5E
stacked_psr = 0x61000042
SHCSR = 0x00000000
MFSR = 0x00
BFSR = 0x82
UFSR = 0x0000
HFSR = 0x40000000
DFSR = 0x00000000
MMAR = 0x18052D08
BFAR = 0x18052D08
https://www.stmcu.org.cn/module/forum/thread-588955-1-1.html
页:
[1]