DMA 在声明变量的时候 会进入死循环

2019-07-21 02:57发布

这个问题我也搞不通 ,放在是花费了我半天的时间才找出来,我也不知道为什么编译器没有报错,问题如下:
在声明如下的数组的时候 ,必须要将声明放在main函数的外面,如果放在里面就会出现死循环:我也不知道是不是语法的问题,但是编译器就是没有报错,真是让人摸不着头脑:
u8 SendBuff[SEND_BUF_SIZE];        //发送数据缓冲区
const u8 TEXT_TO_SEND[]={"ALIENTEK WarShip STM32F1 DMA 串口实验"};         

就是上面的着两段程序,你可以把原子哥的程序中的这两段代码放在main函数中声明,编译的时候也不会报错,但是下载进开发板的时候就会进入死循环,原因现在我也不知道,希望哪位大神看见这个帖子的话可以给我这个小白一点指导,先谢谢啦!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
edmund1234
2019-07-22 08:09
函数内的局部变量就是用栈的, 全局变量就不用栈。
栈可以理解为, 给函数提供临时性内存, 其生命周期是函数, 退出函数后就自动释放。
你可以进一步证明它确实是栈所造成的问题, 在startup_stm32xxxx.s文件里,
把Stack_Size                EQU     0x400
改为 Stack_Size                EQU     0x400+ 8000
看看放在main里还有没有问题

一周热门 更多>