BF518下位机发往上位机串口调试助手,显示是乱码?我是用的BF518开发板里面的例程跑程序,可是在调试助手里显示的是乱码,我不知道是为什么,请大侠们指点。部分代码如下:
unsigned char TXbuf[50]={"\nTest UART in ADSP-EDU-BF51x Board\r\n\n"};
void UART0_init(unsigned int rate)
{
unsigned int div;
div = SYSCLK/rate/16;
*pUART0_GCTL=0x0009;
*pUART0_LCR=0x0080;//DLAB=1 允许访问DLL 和DLH
*pUART0_DLL=div;
*pUART0_DLH=div>>8; //DLL DLH分别赋值
*pUART0_LCR=0x0003;//允许访问 RBR THR 和IER
*pUART0_IER=0x0001;// 接收中断允许
}
EX_INTERRUPT_HANDLER(UART0_ISR)
{
if(*pUART0_LSR&DR) //判断是否有新的数据。
{
if(cont>512) //防止buff溢出,测试代码,将接收到的数据重复写入512字节的buff
cont = 0;
RXbuf[cont]=*pUART0_RBR;
cont++;
}
}
void Init_Interrupts(void)
{
*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xffffffff; // UART 中断定义
*pSIC_IAR2 = 0xf3ffffff;
register_handler(ik_ivg10, UART0_ISR);
*pSIC_IMASK0 = 0x00400000;
}
void Test_TX(void)
{
int i;
for(i=0;i<50;i++) //发送测试函数,将生成的数据通过IR发送出去。
{
*pUART0_THR=TXbuf[i];
while(!(*pUART0_LSR&0x0020)); //判断发送状态位是否为空。不为空等待
}
}
主函数:
int main()
{
int i;
Set_PLL(16,4);
Init_EBIU();
Init_SDRAM();
*pPORTG_FER |= PG9|PG10;
*pPORTG_MUX |= 1<<10;
UART0_init(9600); //9600波特率,8位数据位,1位停止位
Init_Interrupts();
while(1)
{
Test_TX();
delay(10000);
}
}
我遇到的情况如下图:
数组变量
TXbuf[i] 的值和发送到调试助手显示的值是不一样的,也就是说
UART0_THR 的值是乱码吗,还是
*pUART0_THR=TXbuf[i]; 这条语句存在问题?T=0x54,e=0x65,s=0x73,t=0x74.