当数组元素过多时,程序运行时会进入void HardFault_Handler函数

2019-07-20 16:05发布

在进行CCD输出模拟量读取时,需要将读取值放到一个数组中,差不多要读取2090个值,所以将数组设定为2090个元素,但程序运行时会报错,并进入void HardFault_Hardler(void)函数,
当数组元素设定在900以下时,可以正常运行,数组各元素值需要进行后续处理。
请教大神们该如何解决该问题,要求数组元素不能小于2090个;
我用的是STM32F407VET6。

#define MAX_NUM (2090)#define P_CLK PDin(11)       

void Adc_Init(void);                                
u8  Get_Adc(void);                                
typedef struct _CCD_ADC
{
        u8 CCD[MAX_NUM];
}CCD_ADC;




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
龙龙
1楼-- · 2019-07-20 18:47
局部变量不要定义的过大,有中断发生时,那么大的数据没办法进行压栈的,放到全局吧
civic7366
2楼-- · 2019-07-20 21:18
 精彩回答 2  元偷偷看……
gsndragon
3楼-- · 2019-07-21 01:05
栈满了,要不把所有CCD_ADC类型的变量都放到外边,要不就把栈区调大;
yyx112358
4楼-- · 2019-07-21 07:02
这个东西最好定义成全局变量,STM32库函数默认是0x400也就是1K的栈空间,你这都2K多了
鑫鑫迪
5楼-- · 2019-07-21 10:02
 精彩回答 2  元偷偷看……

一周热门 更多>