Uart3_DMA_TXconfig用库函数怎么配置
时间: 2024-05-12 22:19:07 浏览: 109
demo_dma_uart.zip
UART3_DMA_TXconfig是一个函数,用于配置UART3的DMA传输模式。以下是使用库函数进行配置的步骤:
1. 打开UART3时钟:使用函数RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE)打开UART3的时钟。
2. 配置UART3的GPIO引脚:使用函数GPIO_Init()配置UART3的TX引脚。
3. 配置UART3的串口参数:使用函数USART_Init()配置UART3的波特率、数据位、停止位等参数。
4. 配置DMA传输模式:使用函数DMA_Init()配置DMA通道,设置传输方向为从内存到外设,设置外设地址为UART3的数据寄存器地址,设置内存地址为发送缓冲区的地址,设置传输数据长度,设置DMA模式为循环模式,设置DMA优先级为高。
5. 使能DMA传输模式:使用函数DMA_Cmd()使能DMA通道,启动传输。
示例代码:
```
#include "stm32f10x.h"
void UART3_DMA_TXconfig(void)
{
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
DMA_InitTypeDef DMA_InitStructure;
// 打开UART3时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
// 配置UART3的GPIO引脚
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// 配置UART3的串口参数
USART_InitStructure.USART_BaudRate = 115200;
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_Tx;
USART_Init(USART3, &USART_InitStructure);
// 配置DMA传输模式
DMA_DeInit(DMA1_Channel2);
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(USART3->DR);
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)TxBuffer;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_BufferSize = BUFFER_SIZE;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
DMA_Init(DMA1_Channel2, &DMA_InitStructure);
// 使能DMA传输模式
DMA_Cmd(DMA1_Channel2, ENABLE);
// 使能UART3发送DMA请求
USART_DMACmd(USART3, USART_DMAReq_Tx, ENABLE);
}
```
阅读全文