cubemx里的配置问题为什么这样配System Core → RCC → High Speed Clock (HSE) 选 Crystal/Ceramic Resonator所以才这样配置是为了精度更高---------------------------------------------------------------------------------------------------------------------------------分割线Debug这里设置serial Wire防止只能烧录一次---------------------------------------------------------------------------------------------------------------------------------时钟树配置的问题---------------------------------------------------------------------------------------------------------------------------------////////////现在开始配置串口。。。。。。省略了---------------------------------------------------------------------------------------------------------------------------------在keil写一个printf重定向勾选ues microLIBint fputc(int ch, FILE *f){HAL_UART_Transmit(huart1, (uint8_t *)ch, 1, HAL_MAX_DELAY);return ch;}---------------------------------------------------------------------------------------------------------------------------------串口助手接收问题现在printf能直接被串口助手接收到是为什么printf本身完全不知道串口的存在。它只知道一件事我要输出字符时去调用一个叫 fputc() 的函数。所以是把 fputc 换成了往串口发的版本输出就改道到串口了。这叫重定向retarget① 代码printf(hello motor\r\n)↓② C 标准库解析 %d %s 等格式把结果拆成一个个字符↓③ 库内部调用fputc(h, stdout) ← 【关键交接点】↓④ 写的fputc()HAL_UART_Transmit(huart1, ch, 1, ...)↓⑤ HAL 库把字节写进 USART1-DR 寄存器↓⑥ 芯片硬件USART1 外设自动把它按波特率串行移出到 TX 引脚PA9↓⑦ 电平TTL 3.3V 信号从 PA9 出来↓⑧ CH340 模块RXD 收到 → 转换成 USB 数据包↓⑨ 电脑识别成 COM5 虚拟串口↓⑩ 串口助手打开 COM5按 115200 解码 → 显示 hello motor---------------------------------------------------------------------------------------------------------------------------------配置PWM通道让单片机用开关的快慢来连续控制电机转速的手段