这个问题我也搞不通 ,放在是花费了我半天的时间才找出来,我也不知道为什么编译器没有报错,问题如下:
在声明如下的数组的时候 ,必须要将声明放在main函数的外面,如果放在里面就会出现死循环:我也不知道是不是语法的问题,但是编译器就是没有报错,真是让人摸不着头脑:
u8 SendBuff[SEND_BUF_SIZE]; //发送数据缓冲区
const u8 TEXT_TO_SEND[]={"ALIENTEK WarShip STM32F1 DMA 串口实验"};
就是上面的着两段程序,你可以把原子哥的程序中的这两段代码放在main函数中声明,编译的时候也不会报错,但是下载进开发板的时候就会进入死循环,原因现在我也不知道,希望哪位大神看见这个帖子的话可以给我这个小白一点指导,先谢谢啦!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
栈可以理解为, 给函数提供临时性内存, 其生命周期是函数, 退出函数后就自动释放。
你可以进一步证明它确实是栈所造成的问题, 在startup_stm32xxxx.s文件里,
把Stack_Size EQU 0x400
改为 Stack_Size EQU 0x400+ 8000
看看放在main里还有没有问题
好的,谢谢您的指点了,这个对我的学习有很大的帮助。
这个数太大了。
你这个就是数组大小,需要开辟多少内存空间。
你定义成全局变量的话,存在在全局变量区,这个在编译阶段就为你分配好。
如果放在main函数内,就是局部变量,这个空间在编译的时候不给你分配,在程序运行时才在栈区分配。
一周热门 更多>