测试GPIOA例程,串口打印不能成功,显示乱码,请问是何原因呢?
根据程序代码里面的逻辑,板子上电后,会立即向串口0打印一条“GPIOA DEMO....”并回车换行,可是文本显示模式 全是乱码。不知道是和原因…… keil软件上的“Target” 选项中已勾选了 Use MicroLIB,如下面的图。板子上面跳线是图中那样的接法,程序肯定是跑起来了,PA口的灯(网口的绿灯是接的PA口PA18)是200ms的闪烁
测试GPIOA例程,串口打印不能成功,显示乱码,请问是何原因呢?
根据程序代码里面的逻辑,板子上电后,会立即向串口0打印一条“GPIOA DEMO....”并回车换行,可是文本显示模式 全是乱码。不知道是和原因…… keil软件上的“Target” 选项中已勾选了 Use MicroLIB,如下面的图。板子上面跳线是图中那样的接法,程序肯定是跑起来了,PA口的灯(网口的绿灯是接的PA口PA18)是200ms的闪烁
1、测试串口线自发自收是否正常
2、直接下载提供的例子【UART0】,测试是否正常
我测试了【UART0】里面的可以收发,我发什么显示什么,但是就在上电后,应该显示两条
l am uart0!
IRQ sucess!
可是只有第一条是正常的,剩下的就是乱码,我试了几个串口调试助手
开始以为是keil软件有问题,就重新编译了一次,下载进去就是一样,还是显示乱码
那些不是乱码,是十六进制数据
for( i = 0; i < 50; i++ ) buf[ i ] = i;
UART0_SendStr(SEND_STRING ); /* 串口0发送字符串 */
UART0_SendByte(0xAA); /* 串口0发送1字节 */
UART0Send_FIFO( buf, 50 ); /* 启用FIFO,发送50字节数据 */
你是十六进制查看就可以了。
恩恩, 是的! 我后来才发现, 没有认真看程序,其实上电后,文本显示的只有SEND_STRING
我测试了uart0 的例程,可以用, 我编译后也可以用!
唯独其他的程序,一旦编译串口就只打印十六进制的00 只发送了一个字节
#if DEBUG
#define PRINT(X...) printf(X)
#else
#define PRINT(X...)
#endif
例子程序默认没开启调试信息,如果需要,需定义宏 DEBUG 为真,定义位置在头文件包含之前
/* 头文件包含 */
#include
#include
#include "CH563SFR.H"
#include "SYSFREQ.H"
恩, 现在问题已经解决;
在#include “”的上面采用一个宏定义
#define DEBUG 1 就可以串口打印了
还有一种方法就是 把要打印的那句函数PRINT改成小写的“printf”即可
#define DEBUG 1 从此句可以看出功能就是用“printf”来替换“PRINT”
这样问题就迎刃而解了。
我也是用printf用不了,最后一急眼放弃了,现在用自己写的U0send,也玩的很嗨皮。。。
应该是使用PRINT不能用吧?printf打印不会有问题的,要使用PRINT需要宏定义DEBUG