搜索

[单片机芯片] ch552怎么定向到uart1做printf

[复制链接]
378|8
 楼主 | 2021-4-7 16:33 | 显示全部楼层 |阅读模式
如题,官方的工程没找到在哪里定向到UART0的,现在想改成UART1做printf,大神请指点一二,多谢

使用特权

评论回复

评论

yelong98 2021-4-7 17:28 回复TA
@1斯蒂芬 :多谢指点,在下确实愚钝,不知道具体在哪里定义的 
1斯蒂芬 2021-4-7 17:15 回复TA
keil魔术棒里面 C/C++ 把define的debug的值改一下 
 楼主 | 2021-4-7 18:10 | 显示全部楼层
通过重写char putchar(char c) 解决了。但是还是不明白原厂给的工程是怎么定向到uart0的,希望原厂的老板们指点一下

使用特权

评论回复
| 2021-4-7 18:14 | 显示全部楼层
yelong98 发表于 2021-4-7 18:10
通过重写char putchar(char c) 解决了。但是还是不明白原厂给的工程是怎么定向到uart0的,希望原厂的老板们 ...

你看看CH552有没有common.h的头文件,里面有定义

使用特权

评论回复
 楼主 | 2021-4-7 18:46 | 显示全部楼层
没有,就是怎么都没搜到,所以才奇怪是怎么就定向到了uart0

使用特权

评论回复
| 2021-4-7 21:59 | 显示全部楼层
按照例程进行修改,我记得应该是串口的printf的例程

使用特权

评论回复
| 2021-4-8 00:56 | 显示全部楼层
CH552是51内核,使用keil C51开发,printf底层调用putchar函数,keil默认提供的putchar是使用uart0,如果使用其它uart,正确的方法就是修改putchar函数内容。
沁恒ARM内核的芯片例程,使用宏定义DEBUG=?来确定printf使用哪个串口输出。本质上是用相应串口发送操作来实现fputc函数。printf底层调用的是fputc函数。必须在代码中填写fputc函数,不像C51那样,什么也不写默认就是使用uart0。

使用特权

评论回复
| 2021-4-8 10:17 | 显示全部楼层
在任意地方加上下面代码,就OK了

/*********************************************************************************************************
  重写putchar函数,实现printf
*********************************************************************************************************/
char putchar(char c)
{
    UART0SendByte(c);
    return c;
}

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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