新手上路
- 积分
- 46
- 金钱
- 46
- 注册时间
- 2016-7-27
- 在线时间
- 6 小时
|
5金钱
今天写个程序用的单片机是STM32F103RB。使用了 microlib库在主函数中定义了一个数组类型的全局变量 double a1[2][360]; 这个数据总共占用了5760字节。
这个数组的首地址为:0x2000 0B60 末尾地址为:0x2000 21D8
问题出在堆栈的初始地址为:0x2000 1AA0
这就表示堆栈段与数据段的空间分配上发生了冲突。
我我试着将全局变量数据变小 设置为 double a1[2][90]; 但发现还是会占用 堆栈区域。
我自己检查过启动文件使用的:startup_stm32f10x_md.s
编译之后RAM使用情况如下: Code (inc. data) RO Data RW Data ZI Data Debug Object Name
0 0 0 0 0 32 core_cm3.o
364 66 0 0 5760 231847 main.o
0 0 0 0 0 201652 misc.o
36 8 236 0 1024 756 startup_stm32f10x_md.o
162 0 0 0 0 1740 stm32f10x_gpio.o
18 0 0 0 0 3346 stm32f10x_it.o
168 22 0 20 0 3677 stm32f10x_rcc.o
214 6 0 0 0 3796 stm32f10x_usart.o
248 24 0 0 0 1325 system_stm32f10x.o
----------------------------------------------------------------------
1220 126 268 20 6784 448171 Object Totals
0 0 32 0 0 0 (incl. Generated)
10 0 0 0 0 0 (incl. Padding)
|
|