
STM32C071RB实现串口收发功能1、软件安装 这里提供两种软件集成方式: l 首先是STM32CubeMX与MDK STM32CubeMX是 STMicroelectronics 提供的免费图形化配置工具,用于快速初始化 STM32 微控制器的硬件外设(如GPIO、UART、ADC等),生成底层驱动代码(基于HAL/LL库),并支持中间件(如FreeRTOS、USB协议栈)的集成。 STM32CubeMX - STM32Cube initialization code generator - STMicroelectronics(官网下载) 但CubeMX只是一个图形化界面, 用于生成初始化代码(基于HAL/LL库),它本身** 不是编译器 , 所以我们需要搭配一个 **Keil MDK-ARM** CubeMX 生成 .uvprojx 工程文件 → 用 Keil 打开并编译。 依赖关系: 需提前安装 Keil MDK 和 STM32 设备支持包(DFP)。 CubeMX 检测到 Keil 安装路径后,会自动关联。 l 其次就是STM32CubeIDE 我使用的就是IDE。IDE与MX是一家的,IDE包含了MX也弥补了MX的编译烧录功能。(其他功能就不详细讲了) STM32CubeIDE - Integrated Development Environment for STM32 - STMicroelectronics 它支持多种系统,我下载的是Windows的最新版。官方提供了许多资料,也有IDE的使用手册STM32CubeIDE - Integrated Development Environment for STM32 - STMicroelectronics 当然你也可以在软件里找资料,也有各种视频(纯英文) 软件安装好了,记得不要忘了安装一下驱动 2、软件配置 下一步 点击next 接下来手动配置的是LED的引脚(我配置的是PA6、PA7、PA8,除了这三个其他都是系统自动配置) 点击相应的引脚选择GPIO_Output 右键相应引脚添加标签 无需修改代码 :只需在CubeMX中重新映射标签,生成的代码会自动更新引脚定义。 减少错误风险 :避免手动修改代码时遗漏引脚。 设置完成后,点一下这个齿轮图标 我们可以在mian.h文件中看到PA6、PA7、PA8这三个引脚的配置 Main.c文件展示 Main函数展示 int main (void ) { / USER CODE BEGIN 1 / / USER CODE END 1 / / MCU Configuration--------------------------------------------------------/ / Reset of all peripherals, Initializes the Flash interface and the Systick. / HAL_Init();/ 初始化HAL库,重置所有外设,初始化Flash接口和SysTick定时器 / / USER CODE BEGIN Init / / USER CODE END Init / / Configure the system clock / SystemClock_Config(); / 配置系统时钟(通常由CubeMX自动生成) / / USER CODE BEGIN SysInit / / USER CODE END SysInit / / Initialize all configured peripherals / / 初始化所有配置的外设(由CubeMX自动生成) / MX_GPIO_Init(); // 初始化GPIO MX_USART1_UART_Init(); // 初始化USART1串口 uint8_t receiveData[2]; // 用于存储接收到的2字节数据 / USER CODE BEGIN 2 / / 用户外设初始化后代码可以放在这里 / / USER CODE END 2 / / Infinite loop / / USER CODE BEGIN WHILE / while (1) { HAL_UART_Receive(&huart1, receiveData, 2, HAL_MAX_DELAY); // 从USART1接收2字节数据(阻塞式,无限等待) HAL_UART_Transmit(&huart1, receiveData, 2, 100); // 将接收到的2字节数据原样发送回去(超时100ms) GPIO_PinState state = (receiveData[1] == '1') ? GPIO_PIN_SET : GPIO_PIN_RESET ; // 解析第二字节:'1'表示高电平,其他表示低电平 // 根据首字符控制不同LED switch (receiveData[0]) { case 'R':// 红色控制(实际连接蓝色LED) HAL_GPIO_WritePin(LED_BLUE_GPIO_Port, LED_BLUE_Pin, state); break ; case 'G': // 绿色控制(实际连接黄色LED) HAL_GPIO_WritePin(LED_YELLOW_GPIO_Port, LED_YELLOW_Pin, state); // 修正引脚名 break ; case 'B': // 蓝色控制(实际连接绿色LED) HAL_GPIO_WritePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin, state); break ; } / USER CODE END WHILE / / USER CODE BEGIN 3 / } / USER CODE END 3 / } 最后的视频中LED的颜色没有按照代码中的引脚来弄的 STM32C071RB实现串口收发_哔哩哔哩_bilibili 在硬件连接时一定要看好手册 |
【STM32C071RBT6测评】——PWM输出测试:实现一个呼吸灯
NUCLEO-C071RB评测7_UART不定长数据收发的再测试
【STM32C0评测】C071:USB的使用
【STM32C0评测】C071:IIC的使用
NUCLEO-C071RB评测6_四种工作模式的功耗测试
【STM32C0评测】GPIO测试:使用外部中断控制小灯点亮熄灭
【STM32C0评测】+NUCLEO-C071 UART测试
NUCLEO-C071RB评测5_I2C通讯测试
【STM32C0评测】C071:加个PWM
NUCLEO-C071RB评测1_GPIO测试