STM32 DMA 应用之(二) DMA 串口 数据传输--发送

本文介绍了如何利用STM32的DMA进行串口数据传输,特别是串口1的发送功能。配置过程中,启用USART1的DMA发送请求,设置DMA为正常模式,并在DMA传输完成后中断中关闭并重新开启DMA,以实现连续传输。测试使用数组Uart_Send_Buffer作为数据源,观察到串口助手成功接收到数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、DMA请求映像




由此我们知道如果需要使用串口1的发送功能需要用到的是DMA1_Channel4

使用串口1的接收功能需要用到的是DMA1_Channel5

 

 

二、怎样配置软件来使用DMA  把数据传到串口发送?

(1)配置dma

 

/**************************************************************************
*函数名称:  Dma_Init 
*功能描述: 利用DMA 把内存的数据传输到串口发送达到高速传输的目的
*  
*输入参数:无
*返回值  :无
*其他说明:无
*当前版本:v1.0 
*作者     :尹宣
*完成时间:2013年12月1日
*修改日期              版本号              修改人              修改内容
*----------------------------------------------------------------- 
* 
******************************************************************/ 
#define UART_RX_LEN     5 
u8 Uart_Send_Buffer[UART_RX_LEN] = {0x12,0x34,0x56,0x78,0x90}; 
u8 i=0;
u8 Flag_Uart_Send=0;
 
void Dma_Init(void)
{
  DMA_InitTypeDef  DMA_InitStructure;
      
 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
       /* DMA channel6configuration */
  DMA_DeInit(DMA1_Channel1);
 DMA_InitStructure.DMA_PeripheralBaseAddr       = (u32)(&USART1->DR);  //外设地址
 DMA_InitStructure.DMA_MemoryBaseAddr                    =(u32)Uart_Send_Buffer;
  DMA_InitStructure.DMA_DIR                                      =DMA_DIR_PeripheralDST;   //外设作为目的地址   //DMA_DI
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值