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

在使用KEIL5进行STM32F429开发时,遇到float类型全局变量数组C_zernike7在运算过程中异常变化的问题。通过调整startup_stm32f429_439xx.s文件中的堆栈大小,成功解决了数组计算结果不正确且可重复出现的错误。本文详细记录了解决步骤。
AI助手已提取文章相关产品:

平台是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倍(红色是修改后)

 

您可能感兴趣的与本文相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值