小学生
最后登录1970-1-1
在线时间 小时
注册时间2017-12-28
|
大家好,我是刚学习stm32不久,刚看到野火老师的中级篇--DMA那一部分
DMA—M TO P, SRAM 到外设这一节。
我看main函数里,先初始化了USART,然后初始化了DMA,并且使能了DMA
然后才初始化DMA要用的数据源SendBuff,
最后才调用USART_DMACmd
有个疑问是,为什么不是SendBuff先初始化好,然后调用USART_DMACmd使能串口DMA发送
最后再调用USART_DMA_Config()???
因为我的理解是调用了USART_DMA_Config()以后,
DMA就开始DMA数据传输 【DMA_Cmd(DMA_STREAM, ENABLE)】,
而“SendBuff,USART_DMACmd使能串口DMA发送”这两步还没有做,DMA数据应该会丢吧,
哈哈,但老师的实验结果,PC确实收到了5000个字节。
是不是我对这个流程还没有理解清楚,求助大家
int main(void)
{
uint16_t i;
/* 初始化USART */
Debug_USART_Config();
/* 配置使用DMA模式 */
USART_DMA_Config();
/* 配置RGB彩色灯 */
LED_GPIO_Config();
//printf("\r\n USART1 DMA TX 测试 \r\n");
/*填充将要发送的数据*/
for(i=0;i<SENDBUFF_SIZE;i++)
{
SendBuff = 'A';
}
/*为演示DMA持续运行而CPU还能处理其它事情,持续使用DMA发送数据,量非常大,
*长时间运行可能会导致电脑端串口调试助手会卡死,鼠标乱飞的情况,
*或把DMA配置中的循环模式改为单次模式*/
/* USART1 向 DMA发出TX请求 */
USART_DMACmd(DEBUG_USART, USART_DMAReq_Tx, ENABLE);
|
|