DMA 在初始化的时候应该要注意的一点

2019-07-21 03:01发布

本帖最后由 gongzq666 于 2019-4-13 16:59 编辑

在使用stm32f103zet6的时候    应该要注意在DMA的环节  初始化DMA的时候  应该将总线延时5毫秒左右  待总线上的DMA稳定的时候才能进一步底下的操作。至于其他的问题,在下面的学习中  如果遇到  比较关键的问题的时候  我会在下面继续补充出来  供大家一起学习参考:-)

还有就是发现  在声明一下的数组的时候  最好将它编程全局变量  否则就会出现死循环   不相信的话可以将一下的程序放进main函数中 可以试试:
u8 SendBuff[SEND_BUF_SIZE];        //发送数据缓冲区
const u8 TEXT_TO_SEND[]={"ALIENTEK WarShip STM32F1 DMA 串口实验"};         


这个问题我也不知道为什么  先记着 :-)  谁知道的话可以在底下留言哦。
回复上面的问题:因为我在main函数里面声明的较大的数组,而在stm32f10x提供的启动文件中,它的栈预设的大小是0x0000 0400  所以它的栈的大小只有1k,如果想要解决的话  就在启动文件当中修改这个栈的大小,使它能够足够容纳这么大的局部变量。至此这个问题就能够解决了。  还是很谢谢论坛里面的大佬的帮助的。。。
在main函数中声明的数组在编译器进行编译的时候并不会提前分配好内存,它只在启动文件中的栈中存储,因为函数中声明的变量作为局部变量,在程序跳转出函数以后,这个函数中的所有变量在栈中就会释放,就不会存在 ,只有将其定义为全局变量以后,在编译器编译过后就会提前分配好这块的内存,变量的大小不会受到设置的栈的大小的影响。

DMA如果还遇到问题我也会在底下列出来的:-)   大家一起学习,共同进步!!!



0条回答

一周热门 更多>