首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

串口接收到的数据是乱码咋回事

2013-07-04 
串口接收到的数据是乱码怎么回事#include UART.hextern uint8 status/* *Initialization of UART0*/voi

串口接收到的数据是乱码怎么回事
#include "UART.h"

extern uint8 status;

/* 
*Initialization of UART0
*/
void uart0_init(uint16 baudrate)
{
uint32 div,SYS_CLOCK;
SYS_CLOCK=80000000;

MCF_GPIO_PUAPAR=0b01010101;

//Reset Transmitter Receiver Mode Register
MCF_UART0_UCR=MCF_UART_UCR_RESET_TX;
MCF_UART0_UCR=MCF_UART_UCR_RESET_RX;                                     
    MCF_UART0_UCR=MCF_UART_UCR_RESET_MR;               

//No parity,8bit data
MCF_UART0_UMR1=(0
          |MCF_UART_UMR_PM_NONE
              |MCF_UART_UMR_BC_8);

//1bit stop
MCF_UART0_UMR2|=MCF_UART_UMR_CM_NORMAL
  |MCF_UART_UMR_SB_STOP_BITS_1;
                
//Set Rx and Tx buad by SYSTERM CLOCK
MCF_UART0_UCSR=0b11011101;
    
//SetUART interrupts
MCF_UART0_UIMR=0;

//set buad rate
div=(SYS_CLOCK/32/baudrate);
MCF_UART0_UBG1=(unsigned char)(div>>8);
MCF_UART0_UBG2=(unsigned char)(div&0x00ff);

//Enable Tx/Rx
MCF_UART0_UCR=(0
 |MCF_UART_UCR_TX_ENABLED
 |MCF_UART_UCR_RX_ENABLED);
}


//串口发送函数
void uart0_putchar(char c)
{
//Wait until space is available in the FIFO 
    while (!(MCF_UART0_USR&MCF_UART_USR_TXRDY)) 
    {
    ;
    }

    //Send the character 
    MCF_UART0_UTB = (unsigned char)c;
}


//串口接收字符
unsigned char uart0_getchar()
{
//Wait until character has been received 
    while (!(MCF_UART0_USR & MCF_UART_USR_RXRDY)) 
    {
    
    };

    return MCF_UART0_URB;
}


//串口发送字符串
void uart0_putstr(char *str)
{
while(*str!=0)
{
uart0_putchar(*str++);
}
}






乱码 串口 蓝牙 无线 接收
[解决办法]
先检查 baudrate 和 硬件连接
[解决办法]
检查下硬件,硬件出错了,搞死你,都搞不出来。
我之前就试过,有些串口线的质量比较差,
用puty不能接受到数据,但是用超级终端就可以。
------解决方案--------------------


波特率问题,看下你个Fpclk和你的板子晶振设置的一样不,还有就是你用的串口发送频率和接受频率一致
[解决办法]
出现乱码可能的原因:1、波特率配置问题,看看发送和接收两边的波特率是否设置正确?2、看硬件连接及配置问题,比如IO口配置是否正确?
[解决办法]

引用:
出现乱码可能的原因:1、波特率配置问题,看看发送和接收两边的波特率是否设置正确?2、看硬件连接及配置问题,比如IO口配置是否正确?


++
应该一般这个情况下 不是波特率没有设置对就是硬件坏掉了吧!
2个一起排查一下试试
[解决办法]
推荐使用portmon软件辅助调试串口通信程序。

热点排行