这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教一个关于STM32的USART+DMA的问题

共4条 1/1 1 跳转至

请教一个关于STM32的USART+DMA的问题

高工
2013-08-15 20:11:34     打赏

先说一下问题:是不是USART设置了DMA传输模式之后就不能作为普通的串口来进行收发数据了?

实验目的:测试STM32的DMA传输模式。

实验内容:将数组数据由USART1的DMA模式传输到上位机的调试助手。

串口初始化代码如下:

void Uart1_Init(void)

{

//uart 的GPIO管脚初始化 PA9 usart1_TX PA10 USART_RX

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

 GPIO_InitTypeDef GPIO_InitStructure;

 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;

 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//推挽输出

 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

 GPIO_Init(GPIOA,&GPIO_InitStructure);

 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//悬空输入

 GPIO_Init(GPIOA,&GPIO_InitStructure); 

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//只有串口1 使用72M,其他串口使用36M

 USART_InitTypeDef USART_InitStructure;

//串口参数配置:115200,8,1,无奇偶校验,无硬流量控制 ,使能发送和接收

 USART_InitStructure.USART_BaudRate = 9600;

 USART_InitStructure.USART_WordLength = USART_WordLength_8b;

 USART_InitStructure.USART_StopBits = USART_StopBits_1;

 USART_InitStructure.USART_Parity = USART_Parity_No ;

 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

 USART_Init(USART1, &USART_InitStructure);

 USART_ITConfig(USART1, USART_IT_RXNE,ENABLE);//串口接收中断

 USART_Cmd(USART1, ENABLE);

 USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);//开启串口的DNA发送功能

}

    代码中开启了串口的DMA发送功能,同时使能了串口的接收中断。在接收中断处理函数中将接收到的数据再原样发送出去,在用调试中断对串口发送数据的时候,程序可以进入到接收中断中,执行了串口发送函数,但在调试助手中接收不到所发送的数据(串口助手一直在接收DMA所传输的数据),所以就有此开始的疑问,还望大牛们予以指点,在此谢过。




关键词: STM32     USART+DMA    

助工
2013-08-28 13:55:31     打赏
2楼

请问你开DMA了,还开中断干嘛?中断就是为了及时处理串口收到的数据,DMA也是为了处理收到的数据。

http://forum.eepw.com.cn/thread/236680/1

这里是我写的串口学习笔记也许对你用帮助。


高工
2013-08-28 15:16:20     打赏
3楼
我仅使用了串口发送的DMA,对于串口接收没有使用DMA,对于串口的接收而是开启了串口的接收中断,在中断中希望将收到的数据再通过串口发送出去,所以出现了题目中的问题,多谢楼主指教,拜读一下您的文章去

助工
2013-08-31 11:25:20     打赏
4楼
我串口1接收用中断,发送用DMA,没问题,要注意先后,DMA要等中断收集完数据才能开启

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]