当前位置:   article > 正文

stm32cubemx配置dma串口通信_stm32f4cubemx串口dma

stm32f4cubemx串口dma

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

STM32DMA指的是STMicroelectronics公司生产的基于ARM Cortex-M系列处理器中内置的DMA(Direct Memory Access,直接存储器访问)功能,并集成在STM32微控制器中的DMA控制器。

STM32DMA具有以下特点:

高带宽、低延迟:通过DMA控制器,数据可以在不占用CPU时间的情况下,直接在外设和内存之间传输,实现高带宽、低延迟的数据传输。
灵活配置:STM32DMA支持多通道、多优先级、循环/单次传输等丰富的传输模式,可以根据应用场景和需求进行灵活配置。
低功耗:STM32DMA采用了多种节能技术,如动态时钟门控、待机模式等,可以实现低功耗、高效能的数据传输。
易于编程:STM32DMA的编程接口简单易懂,支持多种编程方式,包括CMSIS-DMA库、HAL库、LL库等,对于初学者和专业开发人员都比较友好。
STM32DMA广泛应用于各种领域的嵌入式系统,如工业自动化、智能家居、医疗设备、汽车电子等,可以大大提高系统性能和可靠性,降低系统成本和功耗。

一、创建工程

首先打开cubemx创建工程
在这里插入图片描述
搜索我们的stm32芯片,开始工程
在这里插入图片描述
根据芯片情况来配置时钟源,我们这里选择的外部时钟源

在这里插入图片描述
接下来是对时钟树的配置
在这里插入图片描述
接下来开始对串口配置,我们选择串口1,配置波特率115200
在这里插入图片描述

开启串口中断

接下来,我们开始dma的开启,开启dma
在这里插入图片描述
同理我们开启TX
在这里插入图片描述
到这里我们的工程就弄号了,接下来我们保存工程
在这里插入图片描述
在这里插入图片描述

二、内部程序编写

定义基本的参数
下面是在这个位置添加如下代码
在这里插入图片描述

uint8_t SSS[50];
uint8_t ppp[50]={"stop"};
uint8_t ttt[50]={"start"};
uint8_t mmm[20]={"hello windows "};

char ss =1;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

接下来是
在这里插入图片描述

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart,uint16_t Size)//DMA串口中断回调函数
{
	if(huart==&huart1)
	{
//		HAL_UART_Transmit_DMA(&huart1,SSS,Size);
	HAL_UARTEx_ReceiveToIdle_DMA(&huart1,SSS,sizeof(SSS));
		if(SSS[3]==ppp[3])
		{
				ss=0;
		}
		 if(SSS[3]==ttt[3])
		{
			
				ss=1;
			
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在这里插入图片描述

 HAL_UARTEx_ReceiveToIdle_DMA(&huart1,SSS,sizeof(SSS));
  • 1

接下来在mian函数中while循环中添加如下函数
在这里插入图片描述

	   if(ss==1){

	  HAL_UART_Transmit_DMA(&huart1,mmm,sizeof(mmm));
	  HAL_Delay(1000);
	            }
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

到这里程序就编写完成了。

总结

我们这里stm32一直向上位机发送hellow windows,然后当电脑发送stop向单片机时,单片机停止发送,当发送stars时,开始发送hellow windows 通过dma完成。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/359098
推荐阅读
相关标签
  

闽ICP备14008679号