QJ32F407 USART串口_DMA发送和接收 CubeMx设置串口设置PB11和PB10为串口3的GPIO设置波特率设置中断开启发送接收DMA编写测试代码/* USER CODE BEGIN Header *//** ****************************************************************************** * file : main.c * brief : Main program body ****************************************************************************** * attention * * Copyright (c) 2026 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** *//* USER CODE END Header *//* Includes ------------------------------------------------------------------*/#includemain.h#includedma.h#includeusart.h#includegpio.h/* Private includes ----------------------------------------------------------*//* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*//* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*//* USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------*//* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV */uint8_tRX_Buff_FLAG0;uint8_tRX_Buff[300]{0};uint8_tTX_Buff[300]{0};intRX_Length0;/* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/voidSystemClock_Config(void);/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 */// 串口接收空闲函数voidHAL_UARTEx_RxEventCallback(UART_HandleTypeDef*huart,uint16_tSize){if(huarthuart3){RX_Buff_FLAG1;RX_Length300-__HAL_DMA_GET_COUNTER(huart-hdmarx);HAL_UARTEx_ReceiveToIdle_DMA(huart3,RX_Buff,300);}}/* USER CODE END 0 *//** * brief The application entry point. * retval int */intmain(void){/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* 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_USART3_UART_Init();/* USER CODE BEGIN 2 */// 启动串口DMA接收HAL_UARTEx_ReceiveToIdle_DMA(huart3,RX_Buff,300);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while(1){HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOF,GPIO_PIN_8,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET);HAL_Delay(100);HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOF,GPIO_PIN_8,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);HAL_Delay(100);// 发送数据TX_Buff[0]0x01;TX_Buff[1]0x02;TX_Buff[2]0x03;TX_Buff[4]RX_Buff[0];TX_Buff[5]RX_Buff[1];TX_Buff[6]RX_Buff[2];HAL_UART_Transmit_DMA(huart3,TX_Buff,10);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */}/** * brief System Clock Configuration * retval None */voidSystemClock_Config(void){RCC_OscInitTypeDef RCC_OscInitStruct{0};RCC_ClkInitTypeDef RCC_ClkInitStruct{0};/** Configure the main internal regulator output voltage */__HAL_RCC_PWR_CLK_ENABLE();__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);/** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */RCC_OscInitStruct.OscillatorTypeRCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEStateRCC_HSE_ON;RCC_OscInitStruct.PLL.PLLStateRCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSourceRCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLM4;RCC_OscInitStruct.PLL.PLLN168;RCC_OscInitStruct.PLL.PLLPRCC_PLLP_DIV2;RCC_OscInitStruct.PLL.PLLQ4;if(HAL_RCC_OscConfig(RCC_OscInitStruct)!HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB buses clocks */RCC_ClkInitStruct.ClockTypeRCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSourceRCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDividerRCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDividerRCC_HCLK_DIV4;RCC_ClkInitStruct.APB2CLKDividerRCC_HCLK_DIV2;if(HAL_RCC_ClockConfig(RCC_ClkInitStruct,FLASH_LATENCY_5)!HAL_OK){Error_Handler();}}/* USER CODE BEGIN 4 *//* USER CODE END 4 *//** * brief This function is executed in case of error occurrence. * retval None */voidError_Handler(void){/* USER CODE BEGIN Error_Handler_Debug *//* User can add his own implementation to report the HAL error return state */__disable_irq();while(1){}/* USER CODE END Error_Handler_Debug */}#ifdefUSE_FULL_ASSERT/** * brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * param file: pointer to the source file name * param line: assert_param error line source number * retval None */voidassert_failed(uint8_t*file,uint32_tline){/* USER CODE BEGIN 6 *//* User can add his own implementation to report the file name and line number, ex: printf(Wrong parameters value: file %s on line %d\r\n, file, line) *//* USER CODE END 6 */}#endif/* USE_FULL_ASSERT */代码运行结果串口工具接收和发送数据01 02 03 00 00 00 00 00 00 00 01 02 03 00 00 00 00 00 00 00 01 02 03 00 00 00 00 00 00 00 01 02 03 00 00 00 00 00 00 00 01 02 03 00 00 00 00 00 00 00 01 02 03 00 00 00 00 00 00 00 01 02 03 00 00 00 00 00 00 00 01 02 03 00 00 00 00 00 00 00 01 02 03 04 05 06 01 02 03 00 01 02 03 00 00 00 01 02 03 00 01 02 03 00 00 00 01 02 03 00 01 02 03 00 00 00 01 02 03 00 01 02 03 00 00 00 01 02 03 00 01 02 03 00 00 00 01 02 03 00 01 02 03 00 00 00 01 02 03 00 01 02 03 00 00 00 01 02 03 00 01 02 03 00 00 00 01 02 03 00 01 02 03 00 00 00 01 02 03 00 01 02 03 00 00 00示例工程https://download.csdn.net/download/hmxm6/93126339

相关新闻

最新新闻

跨境独立站免备案 CDN 配置指南,规避海外地区访问拦截

跨境独立站免备案 CDN 配置指南,规避海外地区访问拦截

做跨境电商独立站的从业者大多会选用免备案 CDN 服务,省去国内备案周期,同时覆盖全球海外节点,但配置不当极易出现区域访问拦截、页面加载失败等问题。本文从节点选型、DNS 解析、缓存规则三个实操维度,分享完整落地配置方案。 1…

2026/7/17 21:59:17
Embedding与向量:RAG为啥能“搜意思“而不只是搜关键词

Embedding与向量:RAG为啥能“搜意思“而不只是搜关键词

先讲个例子。 小坤搭了个公司知识库,把《员工手册》全传进去了。他搜"出差住宿标准",结果一片空白;换成手册里的原话"差旅费报销规定",立刻出答案。 他纳闷:这不都是一回事吗?AI不是…

2026/7/17 21:59:17
Ubuntu Server 22.04 LTS安装Nvidia驱动完整指南

Ubuntu Server 22.04 LTS安装Nvidia驱动完整指南

1. 项目概述:Ubuntu Server 22.04 LTS下的Nvidia驱动安装在机器学习领域,GPU加速已经成为训练和推理任务的标准配置。作为最流行的Linux服务器发行版之一,Ubuntu Server 22.04 LTS以其长期支持(LTS)特性和广泛的硬件兼…

2026/7/17 21:59:17
面试官:“答案后面带个 [1],就证明 RAG 没胡说?“我摇头:“文件名是真的,结论可能是编的“

面试官:“答案后面带个 [1],就证明 RAG 没胡说?“我摇头:“文件名是真的,结论可能是编的“

你可能见过这种回答:“这项费用可以报销。来源:员工手册.pdf。” 乍一看,它比没有来源的回答可靠很多。但点开文件以后,你可能发现员工手册有几十页,相关章节只讲报销范围,没有说这项费用一定可以报销。 …

2026/7/17 21:59:17
MCP与A2A协议解析:Agentic Web时代的关键基础设施

MCP与A2A协议解析:Agentic Web时代的关键基础设施

从HTTP到Agentic Web:协议演进的思想脉络 回顾互联网的发展,HTTP协议让浏览器与服务器之间实现了标准化的文档交换,REST API则让机器与机器之间能够以结构化数据通信。如今,随着大语言模型(LLM)和AI智能体(Agent)的成熟,一个更宏大的愿景正在浮现:Agentic Web——让…

2026/7/17 21:59:17
基于Python的数据分析与事件重建:历史海难调查技术实践

基于Python的数据分析与事件重建:历史海难调查技术实践

最近在整理历史资料时,发现不少开发者对"列治文海难"这个历史事件存在技术层面的误解。本文将从数据分析和事件还原的角度,深度剖析这一海难事件的真相,特别适合对历史数据分析、事件调查方法感兴趣的技术爱好者。通过本文&#xf…

2026/7/17 21:54:16

月新闻