本帖最后由 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如果还遇到问题我也会在底下列出来的:-) 大家一起学习,共同进步!!!
一周热门 更多>