logo

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

測試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,也玩的很嗨皮。。。

這人很懶,什么都沒留下
只有登錄才能回復,可以選擇微信和github賬號登錄
体彩11选5助手 互联网理财产品排行榜 天津十一选五 棒球比分动画直播 31选7 北单比分奖金计算器澳客 130724中韩足球直播 债券基金配资 国内前十股票配资平台 15选5 澳大利亚足球超级联赛雪缘园 江苏7位数 山西快乐十分 天津快乐十分 特发信息股票牛叉 1992年上证指数 内蒙古11选5