STM32采用串口DMA方式连续发送数据

目录

  • 一、DMA的认识
    • 1.1 DMA传输四要素
    • 1.2 DMA框图
    • 1.3 DMA数据传输方式
  • 二、用DMA实现数据传输
  • 三、添加代码运行
  • 四、总结
  • 五、参考资料

一、DMA的认识

DMA(直接存储器访问):用于在外设与存储器之间以及存储器与存储器之间进行高速数据传输。DMA传输过程的初始化和启动由CPU完成,传输过程由DMA控制器来执行,无需CPU参与,从而节省CPU资源,提高利用率。

1.1 DMA传输四要素

1、传输源:DMA数据传输的来源
2、传输目标:DMA数据传输的目的
3、传输数量:DMA传输数据的数量
4、触发信号:启动一次DMA数据传输的动作

1.2 DMA框图

STM32采用串口DMA方式连续发送数据_第1张图片

1.3 DMA数据传输方式

普通模式:传输结束后,不再产生DMA操作。若开始新的DMA传输,需在关闭DMA通道情况下,重新启动DMA传输。
循环模式:用于处理环形缓冲区和连续数据流。当激活循环模式后,每轮传输结束时,要传输的数据数量将自动用设置的初始值进行加载,并继续响应DMA请求。

二、用DMA实现数据传输

  • 创建项目工程,选择芯片型号

STM32采用串口DMA方式连续发送数据_第2张图片

  • 选择RCC->HSE->Crystal

STM32采用串口DMA方式连续发送数据_第3张图片

  • 设置串口
    1、点击USATR1
    2、设置MODE为异步通信(Asynchronous)
    3、基础参数:波特率为115200 Bits/s。传输数据长度为8 Bit。奇偶检验无,停止位1 接收和发送都使能
    4、GPIO引脚自动设置 USART1_RX/USART_TX
    STM32采用串口DMA方式连续发送数据_第4张图片
  • 使能中断
    STM32采用串口DMA方式连续发送数据_第5张图片
  • DMA设置
    点击DMASettings 下的 Add 添加通道,传输速率设置为中速
    STM32采用串口DMA方式连续发送数据_第6张图片
  • 模式设置为Normal,右侧选择Memory
    STM32采用串口DMA方式连续发送数据_第7张图片
  • 在System view下选择DMA,左侧点击ADD添加

STM32采用串口DMA方式连续发送数据_第8张图片

  • 进行时钟设置

STM32采用串口DMA方式连续发送数据_第9张图片

  • 设置工程名和IDE版本

STM32采用串口DMA方式连续发送数据_第10张图片

  • generate code即可完成
    STM32采用串口DMA方式连续发送数据_第11张图片

三、添加代码运行

在下图位置添加代码:

STM32采用串口DMA方式连续发送数据_第12张图片

   uint8_t send_char[]="hello world\n";//发送的字符串

STM32采用串口DMA方式连续发送数据_第13张图片

    HAL_UART_Transmit_DMA(&huart1,(uint8_t *)send_char,0xc);//DMA发送
		HAL_Delay(500);//延时

编译无误:
在这里插入图片描述
烧录:
STM32采用串口DMA方式连续发送数据_第14张图片
boot0接0,打开SSCOM串口助手,打开串口即可接收。
STM32采用串口DMA方式连续发送数据_第15张图片

四、总结

DMA传输过程不占用CPUu,更快更高效更加节约资源。

五、参考资料

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

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