串口打印不能成功,顯示亂碼,請問是何原因呢?

測試GPIOA例程,串口打印不能成功,顯示亂碼,請問是何原因呢?

 

 

根據程序代碼里面的邏輯,板子上電后,會立即向串口0打印一條“GPIOA DEMO....”并回車換行,可是文本顯示模式 全是亂碼。不知道是和原因…… keil軟件上的“Target” 選項中已勾選了 Use MicroLIB,如下面的圖。板子上面跳線是圖中那樣的接法,程序肯定是跑起來了,PA口的燈(網口的綠燈是接的PAPA18)是200ms的閃爍


blob.png


blob.png


blob.png


blob.png


1、測試串口線自發自收是否正常

2、直接下載提供的例子【UART0】,測試是否正常

Mail: [email protected] Web: http://wch.cn Tel: +86-025-52638370 Fax: +86-025-84730778

我測試了【UART0】里面的可以收發,我發什么顯示什么,但是就在上電后,應該顯示兩條

l am uart0!

IRQ sucess!

可是只有第一條是正常的,剩下的就是亂碼,我試了幾個串口調試助手

blob.png


開始以為是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字節數據 */

 

你是十六進制查看就可以了。

Mail: [email protected] Web: http://wch.cn Tel: +86-025-52638370 Fax: +86-025-84730778

恩恩, 是的! 我后來才發現, 沒有認真看程序,其實上電后,文本顯示的只有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"

Mail: [email protected] Web: http://wch.cn Tel: +86-025-52638370 Fax: +86-025-84730778

恩, 現在問題已經解決;

在#include “”的上面采用一個宏定義

#define DEBUG  1 就可以串口打印了


還有一種方法就是 把要打印的那句函數PRINT改成小寫的“printf”即可

#define DEBUG  1 從此句可以看出功能就是用“printf”來替換“PRINT”


這樣問題就迎刃而解了。


我也是用printf用不了,最后一急眼放棄了,現在用自己寫的U0send,也玩的很嗨皮。。。

這人很懶,什么都沒留下

應該是使用PRINT不能用吧?printf打印不會有問題的,要使用PRINT需要宏定義DEBUG

025-89692394 e-mail:[email protected] QQ:3212834442(請備注公司信息和簡要需求描述)
只有登錄才能回復,可以選擇微信賬號登錄
淘宝开杂货店赚钱吗 股票大涨前要跌 黑龙江快乐十分走势图 福利彩票北京pk拾官网 炒股开户平台 广西11选五今天的前三 北京快乐8下载安装 体彩福建31选7开奖结果 湖北30选5开奖 股票上市规则 极速赛车技巧百度经验