记一次keil C调试遇到的问题---全局变量被改变

平台是KEIL 5   C    stm32f429开发

现象:定义了一个全局变量的数组:float C_zernike7[35];

运行这几个算式的时候:

        DS=4*4*sqrt3*C_zernike7[3]/Eye_size*Eye_size-2*sqrt6*sqrt(C_zernike7[2]*C_zernike7[2]+C_zernike7[4]*C_zernike7[4])/Eye_size*Eye_size;
        DC=4*4*sqrt6*sqrt(C_zernike7[2]*C_zernike7[2]+C_zernike7[4]*C_zernike7[4])/Eye_size*Eye_size;
出现每走一步,float C_zernike7数组变化一次

计算结果完全不正确,但错误结果可重复

原因:堆栈设置太小,导致全局变量超出大小

解决方法:在头文件startup_stm32f429_439xx.s中更改堆栈大小

Stack_Size      EQU     0x00000800

                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     0x00000400

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3

 

我将红色部分扩大了2倍(红色是修改后)

 

你可能感兴趣的:(记一次keil C调试遇到的问题---全局变量被改变)