stm32f103c8t6串口通信uart3重定向
时间: 2025-01-15 16:13:10 浏览: 107
### STM32F103C8T6 UART3 串口通信重定向
#### 配置 CubeMX
为了使能 UART3 的功能,在 STM32CubeMX 中需勾选 USART3 外设并设置参数,包括波特率、数据位、停止位以及校验方式等。完成外设配置之后,还需指定 NVIC (嵌套向量中断控制器) 对应于 USART3 的优先级等级[^1]。
#### 初始化代码生成
利用 STM32CubeMX 工具自动生成初始化代码框架,确保项目包含了必要的头文件 `<stdio.h>` 和 `usart.c` 文件中的相关函数定义。这些由工具生成的源码提供了基本的操作接口用于后续开发工作。
#### 实现 printf 函数重定向
要让标准输出能够经由 UART 发送出去,则需要覆盖 `_write()` 函数或直接修改 `__io_putchar()` 函数的行为来达到目的。下面是一个简单的实现方法:
```c
#include "main.h"
#include "stm32f1xx_hal.h"
// 定义全局句柄变量以便其他地方可以访问
extern UART_HandleTypeDef huart3;
int __io_putchar(int ch){
HAL_UART_Transmit(&huart3, (uint8_t *)&ch, 1, 0xFFFF); // 使用阻塞模式发送字符
return ch;
}
```
此段代码将每个待打印的字符通过 `HAL_UART_Transmit()` 函数发送到 UART3 接口上,并等待直到传输完成为止。注意这里传入的是之前声明过的 `huart3` 句柄实例[^4]。
#### 测试与验证
编写一段简单程序来进行测试,比如循环输出字符串 “Hello World!” 来确认是否可以通过串行端口正常显示消息:
```c
while(1){
printf("Hello World!\r\n");
HAL_Delay(1000);
}
```
如果一切顺利的话,应该可以在连接好的终端设备(如电脑上的串口调试助手)看到每秒刷新一次的信息流。
阅读全文
相关推荐


















