|
书接上回,今天来进行串口通讯实验 准备进行串口输入输出,串口控制点灯 一、原理图 首先找到需要的usart串口
通过手册可以知道,此为服用端口,与stlink一致的,所以不需要再外接串口即可 二、MX2操作
PA5,点灯使用,与昨天保持一致即可
PA2、PA3串口,设置如下
时钟选择:
模组激活:
生成Cmake
三、VS调试 代码: `` / Includes ------------------------------------------------------------------/ include "main.h"include <stdio.h>include <string.h>include "mx_usart2.h"include "basic_stdio_core.h"/ Private variables ---------------------------------------------------------/ uint8_t aRxBuffer; // 单字节接收缓冲 char cmdBuffer[16]; // 命令缓冲区 uint8_t cmdIndex = 0; // 命令缓冲区索引 volatile uint8_t cmdReady = 0; // 命令就绪标志位 int main(void) { if (mx_system_init() != SYSTEM_OK) { return (-1); } else { hal_uart_handle_t *huart2 = mx_usart2_uart_gethandle(); BASIC_STDIO_Init(huart2); / 上电打印一次 / printf("System Ready!\r\n"); printf("Send 'on' -> LED ON, 'off' -> LED OFF, others -> echo.\r\n"); / 开启接收中断 / HAL_UART_Receive_IT(huart2, &aRxBuffer, 1); while (1) { / 收到完整命令时才处理 / if (cmdReady) { cmdReady = 0; if (strcmp(cmdBuffer, "on") == 0) { HAL_GPIO_WritePin(HAL_GPIOA, HAL_GPIO_PIN_5, HAL_GPIO_PIN_SET); printf("LED ON\r\n"); } else if (strcmp(cmdBuffer, "off") == 0) { HAL_GPIO_WritePin(HAL_GPIOA, HAL_GPIO_PIN_5, HAL_GPIO_PIN_RESET); printf("LED OFF\r\n"); } else { printf("%s\r\n", cmdBuffer); } } } } } / 接收回调函数:负责收字符和判断命令结束 / void HAL_UART_RxCpltCallback(hal_uart_handle_t *huart, uint32_t size_byte, hal_uart_rx_event_types_t rx_event) { if (huart->instance == USART2) { char ch = (char)aRxBuffer; if (ch == '\r' || ch == '\n') { / 命令结束,加结束符,置标志位 / cmdBuffer[cmdIndex] = '\0'; if (cmdIndex > 0) { cmdReady = 1; // 通知主循环:有新命令 } cmdIndex = 0; } else { / 普通字符,累积到缓冲区 / if (cmdIndex < sizeof(cmdBuffer) - 1) { cmdBuffer[cmdIndex++] = ch; } else { cmdIndex = 0; // 溢出保护 } } / 重新开启接收中断,等待下一个字节 / HAL_UART_Receive_IT(huart, &aRxBuffer, 1); } } 四、效果 首先串口打印如下信息: System Ready! Send 'on' -> LED ON, 'off' -> LED OFF, others -> echo. 然后等待接收信息 如果接收到on,则点亮LD1,并回显LED ON 如果接收到off,则熄灭LD1,并回显LED OFF 如果接收到其他信息,则回显接收到的信息 五、视频 |
【STM32C5开发板评测】- 简易低功耗实验:芯片休眠、唤醒功能简单测试演示
《STM32CubeMX2 实战课程》学习笔记+初体验
STM32CubeMX2 学习分享: Parts 经验分享
STM32CubeMX2 学习分享:Middlewares & Utilities 小记
STM32CubeMX2 无法正常添加 CMSIS-DSP?基于 CMake 的手动集成与工程结构优化
STM32CubeMX2 学习分享:Peripherals 配置小记
【NUCLEO-C562RE】呼吸灯
《STM32CubeMX2 实战课程》学习笔记5+CubeMX2生成的Uart初始化代码中没有使能
STM32CubeMX2 学习分享:CubeMX2时钟树
《STM32CubeMX2 实战课程》学习笔记+从配置到工程移植的完整实践
微信公众号
手机版