在STM32上调用memset时出现硬故障异常

时间:2017-04-21 11:50:17

标签: c assembly stm32 memset

启动STM32我尝试为指针指向的结构分配内存。

TLxbEvents *LxbEvents
memset((void*)LxbEvents, 0, sizeof(TLxbEvents));

查看反汇编,它总是在行

崩溃
STMCS r0!,{r2-r3,r12,lr}

我无法在ARM网站或Google或其他地方找到描述STMCS指令的文档...... 那时的寄存器是

r0  0x2000D694
r2  0x00000000
r3  0x00000000
r12 0x00000000
lr  0x00000000

我试图将调用转移到另一个例程,没有任何更改,检查对齐,这似乎也没关系。每当程序运行到该行时,它就会因HardFault崩溃而根据一些调试变量,它是由看门狗复位引起的,我不相信......

这条线做了什么,有人知道,是什么导致了硬故障?

1 个答案:

答案 0 :(得分:2)

STMCS是ARM指令(基本指令是STMCSconditional instruction suffix)看来你是在ARM模式下编译你的代码,但是STM32是一个Cortex-M内核仅支持Thumb-2指令集变体。仔细检查您构建设置和编译开关。