- 打卡等级:以坛为家II
- 打卡总天数:533
- 最近打卡:2025-06-16 07:56:12
已绑定手机
金牌会员
- 积分
- 1031
|
发表于 2024-7-19 08:53:43
|
显示全部楼层
printf打印乱码问题已经解决,设置问题
本帖最后由 380091044 于 2024-7-19 11:28 编辑
你的代码,我看了,也测试了,打印也是没问题的,同样的,我对比了熊仔的代码,打印测试这块写的也是有问题的,打印出来乱码,
他的代码如下:
DebugPrintf.c文件
/*************髡夔佽隴**************
婦漪printf垀剒滲杅ㄛ笭隅砃善揹諳怀堤ㄛ褫蚚衾覃彸湖荂陓洘.
******************************************/
#include "FreeRTOS.h"
#include "DebugPrintf.h"
#define Baudrate 9600L
#define TM (65536 -(MAIN_Fosc/Baudrate/4))
#define PrintUart 1 //1:printf 妏蚚 UART1; 2:printf 妏蚚 UART2
/******************** 揹諳湖荂滲杅 ********************/
void DebugPrintfInit(void)
{
#if(PrintUart == 1)
SCON = (SCON & 0x3f) | 0x40;
AUXR |= 0x40; //隅奀奀笘1T耀宒
AUXR &= 0xFE; //揹諳1恁寁隅奀1峈疏杻薹楷汜
TL1 = TM;
TH1 = TM>>8;
TR1 = 1; //隅奀1羲宎數奀
// P_SW1 = 0x00;//RXD/P3.0/13褐, TXD/P3.1/14褐
// REN = 1; //埰勍諉彶
// SCON = (SCON & 0x3f) | 0x40;
// T2L = TM;
// T2H = TM>>8;
// AUXR |= 0x15; //揹諳1恁寁隅奀2峈疏杻薹楷汜
// REN = 1; //埰勍諉彶
#else
P_SW2 |= 1; //UART2 switch to: 0: P1.0 P1.1, 1: P4.6 P4.7
S2CON = (S2CON & 0x3f) | 0x40;
T2L = TM;
T2H = TM>>8;
AUXR |= 0x14; //隅奀2奀笘1T耀宒,羲宎數奀
// S2CON |= (1<<4); //埰勍諉彶
#endif
}
void UartPutc(unsigned char dat)
{
#if(PrintUart == 1)
SBUF = dat;
while(TI==0);
TI = 0;
#else
S2BUF = dat;
while((S2CON & 2) == 0);
S2CON &= ~2; //Clear Tx flag
#endif
}
DebugPrintf.h文件如下:
#ifndef DEBUG_PRINTF_H
#define DEBUG_PRINTF_H
void DebugPrintfInit(void);
#endif
putchar.c文件如下:
/************* 髡夔佽隴 **************
笭迡printf覃蚚腔putchar滲杅ㄛ笭隅砃善揹諳怀堤ㄛ褫蚚衾覃彸湖荂陓洘.
******************************************/
#include "FreeRTOS.h"
extern void UartPutc(unsigned char dat) reentrant;
char putchar(char c)
{
UartPutc(c);
return c;
}
上电初始化时,打印: printf("STC32G FreeRTOS 聆彸最唗!\r\n");
打印结果如下:
|
-
打印结果是这样的
|