今天调试STM32F407IG,发现编译器编译完成后占用RAM空间28K,但是在仿真的时候总是死或跳到内存错误的中断里死在那里。
后来发现是在某个函数中开辟的临时变量过大,导致内存溢出,将下面红色字体把堆栈的空间划分的大一些就好了。
startup_stm32f4xx.s
; Tailor this value to your application needs
; <h> Stack Configuration
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Stack_Size EQU 0x00001400 ; 划分堆栈空间
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x00000200
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit