当前位置:首页 > 单片机 > 单片机
[导读]一、DMA请求映像由此我们知道如果需要使用串口1的发送功能需要用到的是DMA1_Channel4使用串口1的接收功能需要用到的是DMA1_Channel5二、怎样配置软件来使用DMA 把数据传到串口发送?(1)配置dma/*******************

一、DMA请求映像





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

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

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

(1)配置dma

/**************************************************************************

*函数名称:Dma_Init

*功能描述:利用DMA把内存的数据传输到串口发送达到高速传输的目的

*

*输入参数:无

*返回值:无

*其他说明:无

*当前版本:v1.0


*-----------------------------------------------------------------

*

******************************************************************/

#defineUART_RX_LEN5

u8Uart_Send_Buffer[UART_RX_LEN]={0x12,0x34,0x56,0x78,0x90};

u8i=0;

u8Flag_Uart_Send=0;

voidDma_Init(void)

{

DMA_InitTypeDefDMA_InitStructure;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);

/*DMAchannel6configuration*/

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_DIR_PeripheralSRC;//外设作为DMA的源端

DMA_InitStructure.DMA_BufferSize=5;//BufferSize;//传输大小

DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;//外设递增模式禁止DMA_PeripheralInc_Enable;//外设地址增加

DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;//内存地址自增

DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Byte;//传输方式:字节DMA_PeripheralDataSize_Word;//字(32位)

DMA_InitStructure.DMA_MemoryDataSize=DMA_PeripheralDataSize_Byte;//内存存储方式:字节DMA_MemoryDataSize_Word;

DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;//DMA_Mode_Normal正常模式,只传送一次;DMA_Mode_Circular:循环模式,不停的传送;

DMA_InitStructure.DMA_Priority=DMA_Priority_High;

DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;//DMA_M2M_Enable;

DMA_Init(DMA1_Channel4,&DMA_InitStructure);

/*EnableDMAChannel4TransferCompleteinterrupt*/

DMA_ITConfig(DMA1_Channel4,DMA_IT_TC,ENABLE);

//

//USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);//串口接收器DMA

//采用DMA方式发送

USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);

//启动串口

USART_Cmd(USART1,ENABLE);

DMA_ITConfig(DMA1_Channel4,DMA_IT_TC,ENABLE);

传输完成则进入DMA1_Channel4中断;



注意这句话:USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE); 这是使能指定USART的DMA请求;(不同的外设都有这个 xxx_DMACmd()请求;)

USART_DMAReq_Tx:发送DMA请求

USART_DMAReq_Rx:接收DMA请求


串口配置


/*****************************************************************

*函数名称:USART1_Init

*功能描述:配置串口1初始化

*

*输入参数:无

*返回值:无

*其他说明:无

*当前版本:v1.0


*-----------------------------------------------------------------

*

******************************************************************/

voidUSART1_Init(uint32baud)

{

GPIO_InitTypeDefGPIO_InitStructure;

USART_InitTypeDefUSART_InitStructure;

USART_ClockInitTypeDefUSART_ClockInitStructure;

//使能串口1,PA,AFIO总线

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|

RCC_APB2Periph_AFIO|

RCC_APB2Periph_USART1,

(FunctionalState)ENABLE);

//A9USART1_Tx

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_Init(GPIOA,&GPIO_InitStructure);

//A10USART1_Rx

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA,&GPIO_InitStructure);

USART_InitStructure.USART_BaudRate=baud;

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_ClockInitStructure.USART_Clock =

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

随着科技的飞速发展,电子设备间的连接与数据传输变得越来越重要。Type-C转接头作为连接各种设备的桥梁,其性能与标准也不断升级。本文将详细探讨Type-C转接头2.0与3.1之间的区别,帮助读者更好地理解和选择适合自己的...

关键字: 电子设备 数据传输 Type-C

随着科技的不断进步,移动通信技术也迎来了飞速的发展。从最初的2G时代到如今的5G时代,每一次技术的升级都为我们带来了更快捷、更便利的通信体验。作为最新一代的移动通信技术,5G以其超高速率、低时延和大连接数的特点,正逐步改...

关键字: 移动通信 数据传输 5G

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

STM32与51单片机之间有什么差异呢?两者可以说是一场科技与性能的较量了。在科技飞速发展的今天,微控制器(MCU)已广泛应用于各类电子设备和系统中,发挥着举足轻重的作用。其中,STM32和51单片机作为两种常见的微控制...

关键字: STM32 51单片机 MCU

随着信息技术的飞速发展,数据通信作为连接世界的桥梁,其重要性日益凸显。为了确保数据通信的高效、稳定和可靠,我们需要关注一系列关键的技术指标。本文将深入解析数据通信的主要技术指标,并探讨其前沿发展。

关键字: 数据通信 数据传输

电磁铁是一种利用电流产生磁场的装置,具有快速响应、易于控制等特点,在工业自动化、电子设备、科学实验等领域有着广泛的应用。STM32是一款功能强大的微控制器,具有高性能、低功耗、易于编程等优点,是控制电磁铁的理想选择。本文...

关键字: 电磁铁 微控制器 STM32

边缘人工智能的实现涉及到三个基本 要素:安全性,连接性、自主性,而其中自主性是AI能力的体现,也是边缘AI有别于其他传统的物联网的关键。而通过ST Edge AI套件,就可以帮助各种不同类型的开发者实现覆盖全硬件平台的全...

关键字: 边缘人工智能 AI STM32

今天,小编将在这篇文章中为大家带来STM32单片机最小系统的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: 单片机 单片机最小系统 STM32

STM32是一款由STMicroelectronics生产的微控制器系列,具有高性能、低功耗和丰富的外设资源。其中,串口通信是一种常用的通信方式,可以实现与其他设备之间的数据传输。

关键字: STM32 串口通信 微控制器
关闭
关闭