STM32数组越界问题

前段时间在写STM32程序时,发现定义的局部变量会发生莫名其妙的数组越界,改变其定义顺序问题竟然得到解决,怀疑是堆栈空间没有分配够,于是决定追根溯源,查到一些资料,将startup_stm32f10x_hd.s中的栈空间改大即可:

Stack_Size      EQU     0x00000400;栈空间大小;

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp
                                                  
;  Heap Configuration
;     Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; 
Heap_Size       EQU     0x00000200;堆空间大小;

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

另:如果仍然不行,可修改Keill MDK中的代码优化等级,优化为设置为最低:


你可能感兴趣的:(STM32)