HAL库完成STM32F103以DMA方式实现的连续发送

文章目录

      • 一.DMA
      • 二.STM32F103C8T6以DMA方式实现连续发送
      • 三.总结
      • 四.参考链接

一.DMA

概念

HAL库完成STM32F103以DMA方式实现的连续发送_第1张图片

STM32的DMA控制器特点

HAL库完成STM32F103以DMA方式实现的连续发送_第2张图片

DMA数据传输方式

HAL库完成STM32F103以DMA方式实现的连续发送_第3张图片

串口DMA发送函数:HAL_UART_Transmit_DMA

HAL库完成STM32F103以DMA方式实现的连续发送_第4张图片

二.STM32F103C8T6以DMA方式实现连续发送

CubeMX

RCC设置外部高速时钟HSE 选择外部时钟源

设置串口

HAL库完成STM32F103以DMA方式实现的连续发送_第5张图片

在NVIC Settings中使能中断

HAL库完成STM32F103以DMA方式实现的连续发送_第6张图片

DMA设置

HAL库完成STM32F103以DMA方式实现的连续发送_第7张图片

HAL库完成STM32F103以DMA方式实现的连续发送_第8张图片

HAL库完成STM32F103以DMA方式实现的连续发送_第9张图片

生成代码

HAL库完成STM32F103以DMA方式实现的连续发送_第10张图片

在main.c中添加代码:

  /* USER CODE BEGIN Init */
  uint8_t Senbuff[] = "HELLO WORLD!!!";  //定义数据发送数组
  /* USER CODE END Init */

在while循环中添加代码:

  while (1)
  {
     
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		HAL_UART_Transmit_DMA(&huart1, (uint8_t *)Senbuff, sizeof(Senbuff)-1);  //串口发送Senbuff数组
	  HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}

如果不开启中断,程序只能发送一次数据,程序无法判断DMA传输是否完成。

运行调试:

HAL库完成STM32F103以DMA方式实现的连续发送_第11张图片

三.总结

DMA方式是一种完全由硬件进行组信息传送的控制方式,具有中断方式的优点,即在数据准备阶段,CPU与外设并行工作。

四.参考链接

https://blog.csdn.net/as480133937/article/details/104827639/

你可能感兴趣的:(笔记,stm32,单片机,arm)