STM32+UART串口+DMA收发

简介: STM32+UART串口+DMA收发

1、cubemax端配置

1.1 初始化配置

首先通过STM32cubemax进行基础配置:

cubemax基础配置

1.2 GPIO配置

通过一个LED小灯(高电平有效)来观察效果,对PB0引脚进行GPIO配置,如下图所示:



1.3 UART配置

1.3.1 串口基础配置



1.3.2 DMA配置

首先对RX进行配置,如下图所示:



接着对TX进行配置(默认就行),如下图所示:



2、keil端代码设计

2.1 初始化配置

首先在主函数上方进行发送、接收数组设置,如下图所示:



uint8_t tx[] = "TX ok";
uint8_t Rx[2]; 

2.2 DMA接收初始化配置



HAL_UART_Receive_DMA(&huart1,Rx,sizeof(Rx));

2.3 DMA发送配置



HAL_UART_Transmit_DMA(&huart1,tx,sizeof(tx));
HAL_Delay(1000);

2.4 接收回调函数设置

首先找到HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)函数,如下图所示:



接着将函数按下图所示复制到主函数上方:



void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  /* Prevent unused argument(s) compilation warning */
  UNUSED(huart);
  /* NOTE: This function should not be modified, when the callback is needed,
           the HAL_UART_RxCpltCallback could be implemented in the user file
   */
}

2.5 回调函数内容代码编写

2.5.1 接收回调函数

//接收到数据 LED小灯电平翻转



void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart1.Instance == USART1)
  {
    HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
  }
}

2.5.2 发送回调函数

将接收回调函数中R改成T即可实现发送回调函数功能。如下图所示:



当有数据发送,回调函数进行工作,如下图所示:



uint8_t tx2[] = "TX_IT ok";
//发送回调函数
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
  if(huart1.Instance == USART1)
  {
    HAL_UART_Transmit_DMA(&huart1,tx,sizeof(tx2));
  }
}

2.6 回调函数内容代码优化

当在回调函数中添加延时后,会发现程序卡死,因此需要对NVIC进行配置,如下图所示:


 

相关文章
|
7月前
STM32串口编程基础知识讲解
STM32串口编程基础知识讲解
58 0
|
2月前
|
存储 缓存 芯片
STM32--USART串口
STM32--USART串口
|
2月前
|
Java C语言
STM32使用printf重定向到USART(串口)并打印数据到串口助手
STM32使用printf重定向到USART(串口)并打印数据到串口助手
38 0
|
4月前
|
存储 传感器
【STM32基础 CubeMX】uart串口通信
【STM32基础 CubeMX】uart串口通信
129 0
|
5月前
|
存储 芯片
STM32 cubemx配置USART DMA传输
STM32 cubemx配置USART DMA传输
66 0
|
7月前
|
存储 物联网 芯片
STM32速成笔记(十四)—串口IAP
本文介绍了什么是IAP,IAP有什么作用,如何实现IAP。最后,给出了IAP的实现程序。
115 0
STM32速成笔记(十四)—串口IAP
|
7月前
|
存储 Perl
STM32速成笔记(八)—DMA
本文介绍了DMA的概念,用途。对于STM32F103ZET6的DMA做出了详细地介绍,给出了DMA配置步骤。最后,以配置DMA搬运ADC转换结果为例,给出了DMA的配置和使用方法。
100 0
STM32速成笔记(八)—DMA
|
8月前
STM32F0单片机快速入门七 串口(UART)操作从轮询到中断
STM32F0单片机快速入门七 串口(UART)操作从轮询到中断
STM32F0单片机快速入门七 串口(UART)操作从轮询到中断
|
8月前
|
芯片
STM32F0单片机快速入门六 用库操作串口(UART)原来如此简单
STM32F0单片机快速入门六 用库操作串口(UART)原来如此简单