[CW32F003系列] printf重定向之后无法运行

[复制链接]
2228|91
albertaabbot 发表于 2025-12-10 12:39 | 显示全部楼层
UART 初始化需完整,引脚无复用冲突
minzisc 发表于 2025-12-10 14:44 | 显示全部楼层
标准Keil MDK + MicroLIB写法
gygp 发表于 2025-12-10 16:36 | 显示全部楼层
如何在嵌入式系统中重定向printf到UART接口
primojones 发表于 2025-12-10 19:17 | 显示全部楼层
打开项目选项→ Target → 勾选Use MicroLIB
fengm 发表于 2025-12-11 10:27 | 显示全部楼层
若重定向后程序无法运行,本质是重写的 fputc 存在问题,或外设配置与风筒方案的硬件 / 软件环境冲突。
未来AI 发表于 2025-12-11 11:04 | 显示全部楼层
阻塞式发送确保数据发送完成,高优化等级提升处理效率,适用于对时序要求高的应用。
mollylawrence 发表于 2025-12-11 12:31 | 显示全部楼层
若重定向函数中存在数组越界,会破坏堆/栈结构,导致程序随机崩溃。
tabmone 发表于 2025-12-11 15:12 | 显示全部楼层
Keil默认使用标准C库              
robertesth 发表于 2025-12-11 17:12 | 显示全部楼层
使用 printf 并重定向输出
louliana 发表于 2025-12-11 19:15 | 显示全部楼层
#include "stdio.h"
#include "cw32l010.h"

// 重定向fputc到UART1(以UART1为例,风筒方案常用)
int fputc(int ch, FILE *f)
{
    // 等待UART发送缓冲区为空
    while((USART1->SR & USART_SR_TXE) == 0);
    // 发送字符
    USART1->DR = (uint8_t)ch;
    return ch;
}
jkl21 发表于 2025-12-12 16:17 | 显示全部楼层
手动启用MicroLIB              
jackcat 发表于 2025-12-13 19:42 | 显示全部楼层
重写 fputc 函数              
暖茶轻语 发表于 2025-12-14 07:30 | 显示全部楼层
检查一下你的`USART_Init`函数是否正确配置了波特率、数据位等参数
pixhw 发表于 2025-12-14 07:59 | 显示全部楼层
暂时注释重定向代码,确认程序是否正常。
线稿xg 发表于 2025-12-14 09:36 | 显示全部楼层
数据打印中的重定向确保了信息输出到正确位置,如打印机或显示屏,对于监控和调试尤其重要。
loutin 发表于 2025-12-14 12:50 | 显示全部楼层
未启用 MicroLIB              
updownq 发表于 2025-12-14 14:51 | 显示全部楼层
重定向函数实现错误              
adolphcocker 发表于 2025-12-14 16:52 | 显示全部楼层
Keil MDK默认使用完整标准C库
LinkMe 发表于 2025-12-15 12:43 | 显示全部楼层
可能是程序有错误或者资源不足,检查代码逻辑和资源分配。
cashrwood 发表于 2025-12-16 14:15 | 显示全部楼层
printf 默认依赖标准库的fputc函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0