2025-11-08 05:55:12
首先得用ST-Link下载程序修改代码里波特率的参数。波特率就是设备之间通信的快慢速度,改成9600的话需要先找到代码里设置串口波特率的那个地方。比如在初始化函数里找像"UART_InitStruct.UART_BaudRate = 9600;"这样的代码行,改成这个数值就行。下载新程序后要用ST-Link烧录进芯片,再用串口调试工具测试是否能正常收发数据。
为什么这样操作呢?因为波特率由晶振频率和时钟分频系数共同决定。STM32F103的默认晶振是8MHz,波特率公式是:波特率=晶振频率/(16×(1+分频系数))。比如要得到9600的话,分频系数应该是(8MHz/(16×9600)) -1 ≈52.08,取整数52。所以代码里要改成"UART_InitStruct.UART_Prescaler = 52"。这样计算后波特率实际是8MHz/(16×53)=9515,接近9600但会有细微误差。如果需要更精确,可以调整晶振频率或者用重载位。测试时发现实际波特率是9515,用9600的话接收数据会出现1/53的误差,所以最好用这个数值。烧录程序后用串口助手发送"Hello"测试,如果收到乱码就说明波特率没调对。
本题链接: