stm32重新printf
时间: 2023-08-16 17:16:55 浏览: 21
在STM32中,printf函数的输出可以通过重定义fputc函数来实现。fputc函数是一个底层的I/O函数,用于将字符逐个打印输出。在重定义fputc函数时,我们可以设置输出的地方,比如UART通信的输出寄存器、显示屏的显示寄存器,或者是蓝牙、WiFi等。下面是一个使用UART协议输出的例子:
```c
// 重定义fputc函数
int fputc(int ch, FILE *f) {
while((USART1->SR & 0X40) == 0); // 循环发送,直到发送完毕
USART1->DR = (uint8_t)ch;
return ch;
}
```
这样,当我们在代码中使用printf函数时,实际上是调用了重定义后的fputc函数来逐个字符地打印输出。需要注意的是,如果使用半主机模式,需要连接SWO线(即JTAG接线),而当目标板脱离仿真器(如jlink/ulink)单独运行时,不能使用半主机模式。因此,在使用printf函数时,需要根据具体的情况选择合适的配置。\[1\]\[2\]\[3\]
#### 引用[.reference_title]
- *1* [stm32之printf函数](https://blog.csdn.net/m0_46392035/article/details/127028010)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [STM32使用printf重定向](https://blog.csdn.net/weixin_48120109/article/details/126474339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关推荐















