STM32F407VGT6 使用DMA 学习笔记 DMA通道选择

基本作用:DMA是直接存储器存取,高速数据传输,主要是外设到存储器或者这存储器到存储器的数据传输。

配置:各芯片配置不同,需要查询手册,这里使用的是STM32F407VGT6,有两个DMA控制器,分别为DMA1和DMA2,各八个通道,总共16个通道。每一个都支持软件触发和特定硬件触发。其中硬件触发针对使用外设,主要是外设的数据有触发的时机,采用硬件触发的模式配合。

主要参数
起始地址:决定数据来源和去向
数据宽度:指定一次转运的数据宽度,一般有8位,16位,32位
地址是否自增:指针概念,DMA搬运完一次数据,地址后是否从头开始
传输计时器:自检DMA传输次数,配合自动重装器,可以循环重复设定DMA的传输转运次数,可以视为DMA的一轮工作
M2M:0为硬件触发,1为软件触发

DMA使用条件:DMA使能、传输计数器大于0,必须要有触发信号,这里写入传输计数器时,必须要先关闭DMA,写入,再使能。

硬件触发外设使用注意:针对外设请求,各个芯片有规定好DMA外设请求的信号对应的通道,必须对应才能正常使用。如果是软件触发可以任意选择。STM32F407VGT6的DMA对应可以参考:
请添加图片描述
请添加图片描述
数据宽度对齐:DMA可以8对8 8对16 16对8等转换,把小的数据转到大,高位补零;把大的数据转到小中,高位舍去。

提供一个串口DMA,以供参考:

/*初始化*/
static void bsp_initUSART(u32 bound)
{
   
	USART_InitTypeDef USART_InitStructure;
	GPIO_InitTypeDef GPIO_InitStructure;
	NVIC_InitTypeDef NVIC_InitStructure;

	/*************************************初始化串口1 用于双机通讯*************************************/
	/* 使能 GPIO clock */
	RCC_AHB1PeriphClockCmd(USARTx_TX_GPIO_CLK|USARTx_RX_GPIO_CLK, ENABLE);

	/* 使能 USART clock */
	USARTx_CLK_INIT(USARTx_CLK, ENABLE);

	/* 使能  DMA clock */
	RCC_AHB1PeriphClockCmd(USARTx_DMAx_CLK, ENABLE);

	/* USART1 GPIO configuration -----------------------------------------------*/ 
	/* Connect USART pins to AF7 */
	GPIO_PinAFConfig(USARTx_TX_GPIO_PORT, USARTx_TX_SOURCE, USARTx_TX_AF);
	GPIO_PinAFConfig(USARTx_RX_GPIO_PORT, USARTx_RX_SOURCE, USARTx_RX_AF);

	/* Configure USART Tx and Rx as alternate function push-pull */
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

	GPIO_InitStructure.GPIO_Pin = USARTx_TX_PIN;
	GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStructure);

	GPIO_InitStructure.GPIO_Pin = USARTx_RX_PIN; 
	GPIO_Init(USARTx_RX_GPIO_PORT, &GPIO_InitStructure);

	USART_InitStructure.USART_BaudRate = bound;
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	/* When using Parity the word length must be configured to 9 bits */
	USART_InitStructure
### STM32H743VGT6 HAL库使用教程与文档下载 对于STM32H743VGT6微控制器而言,获取其HAL库的相关资料和教程可以通过多种途径实现。官方提供的资源是最权威且最全面的选择之一。 #### 官方网站与STMCubeMX工具 访问意法半导体官方网站可以找到针对不同系列的STM32产品所对应的固件包和支持文件。特别是通过STM32CubeMX这一图形化配置工具,不仅可以方便地初始化项目设置,还能一键下载对应型号处理器的HAL库源码及其配套的手册说明[^1]。 #### CSDN及其他技术社区平台 除了厂商本身外,在线的技术交流平台上也存在大量由开发者贡献的内容。例如CSDN这样的中文编程论坛里经常会有用户上传自己整理过的关于特定硬件平台开发指南或是遇到问题后的解决方案分享。像提到的`STM32CubeIDE_ADC_DMA_4channel`这类具体应用场景下的实例代码同样可以在这些地方寻得灵感。 #### 参考手册的重要性 当深入研究某个功能模块时,《参考手册》是非常重要的参考资料。它详细描述了各个寄存器的功能以及如何利用它们来完成预期的操作。虽然这里讨论的是F4系列的例子,但对于理解其他家族成员如H7来说也是非常有帮助的。掌握阅读《参考手册》的方法能够使工程师更加灵活自如地运用各种特性而不仅仅局限于简单的复制粘贴操作[^3]。 为了更好地适应新器件的特点并充分利用高性能的优势,建议从以下几个方面入手寻找适合自己的学习材料: - **查阅最新的数据表和技术笔记** - **参与活跃的技术支持群组或论坛讨论** - **观看在线课程视频**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值