stm32-9DMA为CPU减负

本文介绍STM32使用DMA实现数据传输到USART1的过程,减轻CPU负担。内容包括DMA工作原理,如何配置DMA传输,以及主函数和相关配置函数的解析。注意DMA通道优先级和数据传输后的寄存器自减。
摘要由CSDN通过智能技术生成

stm32-9DMA为CPU减负



一、DMA相关

直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间高速数据传输。无须CPU任何干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。
两个DMA控制器有12个通道(DMA1有7个通道, DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权

1. 用DMA传输数据到USART1过程
  1. 当发生TXE事件(TDR为空)产生DMA请求到DMA控制器 -> DMA应答,访问外设 -> 外设受到应答信号,释放请求->DMA撤销应答
  2. DMA将数据加载到外设TDR
  3. 计数器DMA_CNDTRx递减
2. 注意
  1. 编号低的通道优先级高
  2. 每次传输后相关寄存器自减

二、分析程序
1. 主函数

主要功能:用DMA移动数据由内存SendBuff到外设USART1,CPU处理其他事情
1. USART1_Config();用于配置串口通信
2. USART1_DMA_Config();用于配制DMA:由内存到外设
3. LED_GPIO_Config();用于配制LED,供CPU控制

#include "stm32f10x.h"
#include "bsp_usart1.h"
#include "bsp_led.h"

extern uint8_t SendBuff[SENDBUFF_SIZE];//
static void Delay(__IO u32 nCount); 

/**
  * @brief  
  * @param  
  * @retval 
  */
int main(void)
{
        /* USART1 config 115200 8-N-1 */
        USART1_Config();
        /* DMA配置 */
        USART1_DMA_C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值