平台是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
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x00000400
AREA HEAP, NOINIT, READWRITE, ALIGN=3
我将红色部分扩大了2倍(红色是修改后)
在使用KEIL5进行STM32F429开发时,遇到float类型全局变量数组C_zernike7在运算过程中异常变化的问题。通过调整startup_stm32f429_439xx.s文件中的堆栈大小,成功解决了数组计算结果不正确且可重复出现的错误。本文详细记录了解决步骤。

203


被折叠的 条评论
为什么被折叠?



