历史上的今天
返回首页

历史上的今天

今天是:2025年05月20日(星期二)

正在发生

2019年05月20日 | 串口调试助手出现乱码

2019-05-20 来源:eefocus

首先用一个正确的程序试一下确保软件本身没有什么问题,


然后再依次检查波特率和VPB时钟频率是否匹配,因为它们不匹配的时候同样会出现乱码。


如果最后还是乱码的话,可能就是程序的问题了,需要检查程序是否有语法以外的错误。


自己今天下午调了一个串口发送字符串的程序,就是因为没有把波特率和VPB时钟频率匹配好,导致一直出现乱码


当 UART_BPS 设为9600,Fpclk 为(Fosc/4)*1时是正确的组合,


错误一:UART_BPS 设为9600,Fpclk为 (Fosc/4)*2,出现了乱码,


错误二:UART_BPS 设为115200,Fpclk 为(Fosc/4)*1,出现了乱码


错误三:UART_BPS 设为115200,Fpclk 为(Fosc/4)*2,出现了乱码


程序如下所示:


方法一:


#include


void UART1_Init(void);

void UART1_SendStr(char *Str);

void UART1_SendByte(char byte);

void delayn(unsigned long n);

#define UART_BPS  9600 //设置串口通信波特率


#define Fosc 12000000   //晶振频率


#define Fpclk (Fosc/4)*1 //VPB时钟频率,MD此处公式写错了,导致字符串显示不出


//UART1串口初始化

void UART1_Init(void)

{

  //unsigned char Fdiv;

  U1FCR=1;     //FIFO使能

  U1LCR=0x83;  //使能访问除数锁存,8位字符长度,1个停止位,禁止奇偶产生和校验,

  //Fdiv=(Fpclk/16)/UART_BPS; //设置波特率

  U1DLL=Fpclk/(16*9600);   //除数的底8位

  U1DLM=(Fpclk/(16*9600))>>8;   //除数的高8位

  U1LCR=0x03;       //禁止访问除数锁存器

}

//发送字符串

void UART1_SendStr(char *Str)  

{

  while((*Str)!='')  //遇到结束符,退出

  {

    UART1_SendByte(*Str); //发送数据

    Str++;

  }

}

//发送单个字符

void UART1_SendByte(char byte)

{

  while((U1LSR&0x20)==0); //等待数据发送完毕

   U1THR=byte;  //写入数据

}

//延时函数

void delayn(unsigned long n)

{

  while(n--);

}

int main(void)

{

  PINSEL0=0x00050000; //P0.8,P0.9选择UART0

  UART1_Init();      //UART1串口初始化

  while(1)

  {

    UART1_SendStr("UART1 TEST.n");

    delayn(100000);

  }

}


方法二:


#include


void UART1_Init(void);

void UART1_SendStr(char *Str);

void UART1_SendByte(char byte);

void delayn(unsigned long n);

#define UART_BPS  9600 //设置串口通信波特率


#define Fosc 12000000   //晶振频率

//#define Fcclk (Fosc*4)  //系统频率

#define Fpclk (Fosc/4)*1 //VPB时钟频率,MD此处公式写错了,导致字符串显示不出

//unsigned char Fdiv;

typedef unsigned short U16;

/*************************串口1初始化******************************************/

void UART1_Init ()

{

  U16 Fdiv;

  U0LCR = 0x83;                   // DLAB = 1,可设置波特率

  Fdiv =(Fpclk/16)/UART_BPS;

  U0DLL = Fdiv%256;

  U0DLM = Fdiv/256;

  U0LCR = 0x03;

}

//发送字符串

void UART1_SendStr(char *Str)  

{

  while((*Str)!='')  //遇到结束符,退出

  {

    UART1_SendByte(*Str); //发送数据

    Str++;

  }

}

//发送单个字符

void UART1_SendByte(char byte)

{

  while((U1LSR&0x20)==0); //等待数据发送完毕

   U1THR=byte;  //写入数据

}

//延时函数

void delayn(unsigned long n)

{

  while(n--);

}

int main(void)

{

  PINSEL0=0x00050000; //P0.8,P0.9选择UART0

  UART1_Init();      //UART1串口初始化

  while(1)

  {

    UART1_SendStr("xiao mu lang shi ge da duan dan.hahan");

    delayn(1000000);

  }

}



推荐阅读

史海拾趣

Hokuriku公司的发展小趣事

90年代初期,随着全球化进程的加速,Hokuriku Electric开始将目光投向国际市场。公司首先在欧洲和北美设立了销售分支机构,随后又逐步拓展至亚洲其他地区。通过参加国际展会、建立合作伙伴关系等多种方式,Hokuriku Electric成功将其优质产品推向全球市场。这一过程中,公司不仅积累了丰富的国际销售经验,还提升了品牌知名度和影响力,为后续的全球化发展奠定了坚实基础。

HN Electronic Components GmbH & Co Kg公司的发展小趣事

背景:进入21世纪后,随着全球化和互联网的发展,HN Electronics开始寻求更广阔的市场空间。

发展:公司决定拓展国际市场,首先在亚洲市场设立分支机构,随后进军欧洲和北美。为了加速国际化进程,HN Electronics与多家国际知名电子企业建立了战略合作关系,共同开发新产品。

关键事件:2005年,HN Electronics与韩国某知名电子企业签署合作协议,共同研发新一代显示驱动芯片,这一合作极大地提升了公司在显示技术领域的竞争力。

Floeth Electronic Ltd公司的发展小趣事

背景:2008年全球金融危机爆发,电子行业受到重创,市场需求大幅下降。

发展:面对严峻的市场环境,HN Electronics迅速调整战略,削减非核心业务,加强成本控制,并加大在研发领域的投入,以技术创新为突破口,寻找新的增长点。

关键事件:在金融危机期间,HN Electronics成功开发出具有更高性价比的物联网传感器芯片,满足了市场对智能家居、智慧城市等新兴领域的需求,从而实现了业绩的稳步增长。

Hi-Light Electronic Co Ltd公司的发展小趣事

背景:近年来,随着全球对环境保护和可持续发展的重视,电子行业也面临着绿色转型的压力。

发展:HN Electronics积极响应环保号召,将绿色生产理念融入公司的发展战略中。公司投入大量资金进行技术改造和设备升级,减少生产过程中的能耗和污染排放。同时,HN Electronics还积极研发和推广绿色电子产品,满足市场对环保产品的需求。

关键事件:2020年,HN Electronics推出了一系列采用环保材料和先进生产工艺的绿色电子产品,这些产品不仅性能优异,而且符合国际环保标准,赢得了市场的广泛好评。

Advanced Energy公司的发展小趣事

AE公司一直将创新作为企业发展的核心动力。公司不断投入研发资源,推动电源技术的持续创新。同时,AE公司也积极与各大电子企业建立合作伙伴关系,共同推动电子行业的发展。通过与合作伙伴的紧密合作,AE公司不仅获得了更多的市场机会,也提升了自身的技术水平和创新能力。

Dynachip Corp公司的发展小趣事

为了进一步提升公司的竞争力,Dynachip Corp积极寻求国际合作机会。他们与国际知名的半导体企业建立了战略合作关系,共同研发新技术、新产品。同时,他们还积极开拓国际市场,将产品销往全球各地。这些国际合作和市场拓展的努力使Dynachip Corp在国际市场上树立了良好的品牌形象。

问答坊 | AI 解惑

电量隔离传感器的工作原理和数字化技术

电量隔离传感器变送器是针对工程中的电量检测(监测),提高系统的整体抗干扰能力,而研制开发的一种小体积、高性能的电量测试部件(产品)。 电量隔离传感器变送器可以对现场的大电流、高电压、功率、频率、相角、电度等电参量进行隔离测量和变换,也 ...…

查看全部问答>

【正版】Windows Embedded SP2

Windows Embedded Standard SP2 正版全套9CD 版本 软件功能及介绍就不多说了,可以去微软官方网站查看, (http://www.microsoft.com/windowsembedded/zh-tw/about/what.mspx) 产品包括9张CD光盘和安装ID以及PID,是市场上 最全的正版产品。 以下是9 ...…

查看全部问答>

标题: 学3G,拿高薪,来渥瑞达!

渥瑞达专注于培养薪酬高、市场紧缺的高端3G嵌入式软件工程师。 欢迎大家与我们的703期学员交流!这期学员已于07年7月29日毕业。 学员就业薪水都在6000元/月以上 您还可以加入渥瑞达学员的QQ群与学员面对面交流 渥瑞达学员咨询交流的QQ群号 ...…

查看全部问答>

内部FAE培训资料【3】GPIO模块介绍及应用_讲稿

内部FAE培训资料【3】GPIO模块介绍及应用_讲稿…

查看全部问答>

求助版主解答RTC问题

请问版主是否有遇到过RTC因为温度过低而不能起振的问题? ST RTC晶振是否需要并一颗反馈电阻? 谢谢…

查看全部问答>

关于IFR

ti的文档 中有这么一句: Notes: 1) To clear an IFR bit, you must write a one to it, not a zero. 明明如果要清除某个中断请求的话要把相应的IFR位置为0,怎么能是 置1呢?…

查看全部问答>

上海招聘:FPGA设计师

上海博达数据通信有限公司招聘FPGA设计工程师和电源开发工程师,有兴趣的朋友请发简历到:yangrong@bdcom.com.cn,或者在QQ:277358331上留下联系方式,我会及时回电!谢谢各位的关注!   高级FPGA设计师  工作职责: 负责数据通信 ...…

查看全部问答>

2011电源突破性新技术

在电源半导体器件领域,SiC(Silicon carbide:碳化硅材料不但具备击穿电场强度高、热稳定性好,还具有载流子饱和漂移速度高、热导率高等特点。因为这些特性,SiC可以用来制造各种耐高温的高频大功率器件,罗姆已经率先将基于碳化硅的肖特基势垒二 ...…

查看全部问答>