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

2019-07-21 02:57发布

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

就是上面的着两段程序,你可以把原子哥的程序中的这两段代码放在main函数中声明,编译的时候也不会报错,但是下载进开发板的时候就会进入死循环,原因现在我也不知道,希望哪位大神看见这个帖子的话可以给我这个小白一点指导,先谢谢啦!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
brucewoo
2019-07-21 18:32
gongzq666 发表于 2019-4-12 19:38
没有,作用域没有被限制的问题,操作这个数组的过程都是在main函数中实现的,就算是将声明放在main函数中 ...

你没有贴出完整的程序,无法进一步判断。
而且,你既然用到DMA,那么是在main函数中打开DMA传输,还是在某个中断中打开DMA传输? DMA传输的时候,源地址和目标地址所指向的位置是否有效?指向的是STACK里面局部变量的地址?这看上去怪怪的。
我的看法是,涉及DMA或中断的,最好使用全局变量。

一周热门 更多>