----配置串口打印)
STM32C542R开发.3--配置串口打印概述视频教学样品申请源码下载硬件准备参考程序生成STM32CUBEMX2时钟树配置DEBUG配置串口配置生成项目导入STM32CubeIDE设置工程编码添加头文件printf 重定向串口打印测试演示概述在传统 STM32 开发中我们通常会通过 STM32CubeMX 配置 USART并重定向 printf() 到串口用于输出调试信息。STM32C5 使用新的 STM32CubeMX2 和 HAL2 驱动体系工程结构和部分 API 命名相比传统 HAL 有所变化因此串口配置和代码编写也需要稍作适配。需要样片的可以加群申请925643491 / 615061293 。视频教学https://www.bilibili.com/video/BV1GHgj6bENf/样品申请https://www.wjx.top/vm/OhcKxJk.aspx#源码下载https://download.csdn.net/download/qq_24312945/93389982硬件准备首先需要准备一个开发板这里我准备的是自己绘制的开发板需要的可以进行申请。主控为STM32C542RCT6参考程序https://github.com/CoreMaker-lab/STM32C542R_SENSOR生成STM32CUBEMX2用STM32CUBEMX2生成例程这里使用MCU为STM32C542RCT6。打开 STM32CubeMX2 后进入 Home 首页点击 MCU基于具体芯片型号创建工程在 MCU name 中输入 STM32C542RCT6选择对应的 STM32C5 芯片型号后点击 Continue 进入下一步工程配置。填写工程名称和保存路径后点击 “Automatically Download, Install Create Project”STM32CubeMX2 会自动下载所需软件包并创建工程。STM32CubeMX2 提示 Project Successfully Created 后点击右下角 “Launch Project” 进入工程配置界面。时钟树配置点击左侧外设配置入口进入 Peripherals 配置界面在 System 分类下选择 RCC用于配置系统时钟源HSE Source 选择 Crystal/ceramic resonator启用外部高速晶振LSE Source 选择 Crystal/ceramic resonator启用外部低速晶振点击左侧 Clock 图标进入时钟树配置界面HSE OSC设置外部高速晶振频率这里配置为 24 MHzPSI Mux / PLL选择并配置 PLL 时钟源用于倍频生成系统主频System Mux选择系统时钟来源当前系统主频配置为 144 MHzDEBUG配置在 Peripherals 中选择 Cortex → DEBUG将 Mode 配置为 Single-wire trace asynchronous用于后续程序下载、在线调试和 Trace 调试功能。串口配置查看原理图PA9和PA10设置为开发板的串口。在左侧 Peripherals 中选择 Connectivity → USART1Mode 选择 Async表示配置为异步串口模式Function used by the component 显示为 UART说明 USART1 在异步模式下使用 UART HAL 驱动串口参数配置为115200 波特率、8 位数据位、无校验、1 位停止位、收发模式GPIO TxUSART1_TX 选择 PA9GPIO RxUSART1_RX 选择 PA10PA9 / PA10 均配置为 Alternate 复用功能模式Pull 选择 No pull-up and no pull-downOutput type 选择 Push pullSpeed 选择 Low生成项目修改配置后左下角会提示 Click to save需要先保存当前工程配置点击左侧 Project settings进入工程生成设置页面在 IDE Project Generation 中选择工程格式和工具链本例选择 CMake GCC然后点击 Generate IDE project 生成工程导入STM32CubeIDE打开 STM32CubeIDE点击菜单栏 File选择 Import…准备导入 STM32CubeMX2 生成的 CMake 工程在 Import 窗口中展开 Import STM32 Project选择 STM32 CMake Project点击 Next进入 CMake 工程路径选择页面Project name填写导入到 STM32CubeIDE 中显示的工程名称Source directory选择 STM32CubeMX2 生成的 CMake 工程目录点击 Next继续完成工程导入Toolchain选择 MCU ARM GCC表示使用 ARM GCC 工具链进行编译MCU确认芯片型号为 STM32C542RCTx与前面 STM32CubeMX2 中选择的 MCU 保持一致CPU/Core确认内核为 Cortex-M33Core 为 0点击 Finish完成 CMake 工程导入设置工程编码在 Project Explorer 中选中当前工程点击菜单栏 Project选择 Properties进入工程属性设置在工程属性中选择 ResourceText file encoding 选择 Other编码格式输入 GBK点击 Apply and Close 保存设置添加头文件在 main.c 中添加头文件#includemx_usart1.h#includestdio.h#includestring.hprintf 重定向为了让 printf() 输出到 USART1需要重写 _write() 函数。GCC 工程中printf() 底层会调用 _write() 输出字符因此只需要在 _write() 中调用 HAL_UART_Transmit()就可以把 printf() 的内容通过串口发送出去。int_write(intfile,char*ptr,intlen){hal_uart_handle_t*huart1mx_usart1_uart_gethandle();if(huart1!NULL){HAL_UART_Transmit(huart1,ptr,len,1000);}returnlen;}串口打印测试在 mx_system_init() 初始化完成后可以直接调用 printf() 进行串口打印测试hal_uart_handle_t *huart1 mx_usart1_uart_gethandle();printf(“Hello STM32C5 UART printf\r\n”);printf(“STM32C5 串口打印测试\r\n”);char msg[] “Hello STM32C5 UART\r\n”;HAL_UART_Transmit(huart1, msg, strlen(msg), 1000);演示