PRINT无法输出

很想用PRINT输出一些调试信息,但是我现在需要使用uart0。

配置也更改了。

无标题-2.png


程序也初始化了uart0。

无标题-1.png


但是只有UART0_SendString能输出,PRINT没有输出。

无标题-3.png


我的问题出在哪里?

您好,串口0配置:

以及debug改为0即可,顺带看下CH58x_uart0.c文件有没有参与编译。

GPIOB_SetBits(GPIO_Pin_7);
GPIOB_ModeCfg(GPIO_Pin_4,GPIO_ModeIN_PU);
GPIOB_ModeCfg(GPIO_Pin_7,GPIO_ModeOut_PP_5mA);
UART0_DefInit();




您好,默认配置下,在使用PRINT接口时,注意在字符串尾部加一个换行'\n',没有的话会缓存起来达到一定大小一并输出。

如果不希望在PRINT尾部增加'\n',可以勾选如下配置。

image.png


@TECH_JW,大佬,你好。请问我想用串口2与printf绑定。可是PRINT打印没有输出,这是什么原因啊?串口2有什么特殊项需要配置吗?我用默认的串口1就可以正常输出。


我将DEBUG已经改成了2,同时,串口2配置代码如图所示:image.pngimage.png


使用串口2用于PRINT打印:打开EVT的例程,做如下修改

①将DEBUG宏改成2

②初始化的串口引脚改成实际对接的脚(注意区分A/B组GPIO)。需要映射的要调用GPIOPinRemap函数做映射,比如实际使用PB22/23作为UART2的引脚,那么映射函数不能少。

常见异常排查:

①检查接线、各个链路环节是否有不良。

②使用到的串口IO,是否接到了其他外围电路导致信号干扰。

③是否有将IO配置为其他复用功能导致串口功能被覆盖。

如果有源文件未加入编译导致报错,右键点击串口2驱动源文件,点击"Include..."加入编译。

⑤自定写寄存器对照例程检查是否缺漏/写错,可以通过其他串口输出信息/翻转IO等方式,判断目标寄存器实际值是否与预期值一致。


排查了一下,发现我把GPIO配置错了,应该用GPIOB,用成了GPIOA。不过,这个改了后依然不行。另外,开发板上PB22和PB23都接了一下LED灯,还有就是下载工具上RST用到了PB23,PB22用于了下载配置,不知是否与此有关?


使用PB22/23作为串口脚,检查有没有调用GPIOPinRemap函数。

如果使用PB22/23作为串口脚,一定要在烧录时去掉RST功能,否则PB23引脚上出现低电平就会导致MCU复位。

PB22无所谓,仍可以作为boot脚保留,只要上电时刻PB22未被下拉就不会触发boot。


只有登录才能回复,可以选择微信账号登录