热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

STM32F7学习笔记(三)串口DMA

一、打开上一节的工程,在上一节的基础上进行修改二、配置DMA在cubemx界面上点击DMA因为串口1是挂在DMA2上的,所以点击DMA2࿰

一、打开上一节的工程,在上一节的基础上进行修改


二、配置DMA

在cubemx界面上点击DMA在这里插入图片描述
因为串口1是挂在DMA2上的,所以点击DMA2,如图中标记的2,随后点击ADD
在这里插入图片描述
选择USART1_RX,继续点击ADD,将USART1_TX也添加进去,随后配置DMA如下图所示在这里插入图片描述
其中mode设置可以选择Normal表单次传输,传输一次后终止传输,Circular表示循环传输,传输完成后又重新开始继续传输,不断循环永不停止。此处选择单次传输。

Increment Address表示地址指针递增。串口发送数据是将数据不断存进串口的发送数据寄存器(USARTx_TDR)。所以外接的地址是不递增。而内存储器存储的是要发送的数据,所以地址指针要递增才能将所以的数据发送出去。

串口数据发送寄存器只能存储8bit,每次发送一个字节,所以数据长度选择Byte。


三、生成代码

在主函数中添加代码,添加完成如下所示

int main(void)
{/* USER CODE BEGIN 1 */uint8_t *data="uart dma test\r\n";/* USER CODE END 1 *//* Enable I-Cache---------------------------------------------------------*/SCB_EnableICache();/* Enable D-Cache---------------------------------------------------------*/SCB_EnableDCache();/* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_DMA_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */HAL_UART_Receive_IT(&huart1,aRecBuff,1);printf("uart test is run!!!\r\n");/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_UART_Transmit_DMA(&huart1,data,strlen((char*)data));HAL_Delay(1000);}/* USER CODE END 3 */
}

四、打开串口调试助手,观察现象,串口每隔1S输出一次数据

在这里插入图片描述


推荐阅读
author-avatar
杨俊其632
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有