微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > 为什么这样串口发送数据是乱的

为什么这样串口发送数据是乱的

时间:10-02 整理:3721RD 点击:
#include <iocc2530.h>
#include <string.h>

#define TX_SIZE 20
#define TX_STRING "Hello Zigbee "

char TxData[TX_SIZE];

void init_clock (void);
void init_uart (void);
void delay (unsigned mse);
void uart_send_string (char *data, int len);

void main (void)
{
init_clock ();
init_uart ();
memset (TxData, 0, TX_SIZE);
memcpy (TxData, TX_STRING, sizeof(TX_STRING));
while (1)
{
uart_send_string (TxData, sizeof(TX_STRING));
delay (1000);
}
}

void init_clock (void)
{
CLKCONCMD &= 0x40;
while (CLKCONCMD & 0x40);
CLKCONCMD &= 0x47;
}

void init_uart (void)
{
PERCFG = 0x00;
P0SEL = 0x0c;
P2DIR &= 0xc0;

U0CSR |= 0x80;
U0GCR |= 11;
U0BAUD |= 216;
UTX0IF = 0;

IEN2 |= 0x04;
IEN0 |= 0x80;
}

void delay (unsigned mse)
{
unsigned int i,j;

for (i = 0; i < mse; i++)
for (j = 0; j < 1070; j++);
}

void uart_send_string (char *data, int len)
{
unsigned int i;
for (i = 0; i < len; i++)
{
U0DBUF = *data++;
while (UTX0IF == 0);
//UTX0IF = 0;
}
}

#pragma vector = UTX0_VECTOR
__interrupt void UART0_ISR (void)
{
UTX0IF = 0;
}

你是用串口助手接收的吗。波特率设对了吗,乱是怎么表现的,具体是什么数据,改变发送波特率,有什么变化, 有什么规律。最好看看发送引脚的波形。

我while(UTX0IF == 0)注释掉后,串口助手只能显示H,波特率也是对的,感觉是中断没调对,自己又不懂调

感觉是中断没调对。不用中断。先只调发送,初始化不要使能发送中断,发送过程,不用进入中断。串口助手用hex显示。

就是中断的问题,不知道怎么调

初始化代码就那么一段,一行一行看,每个寄存器,被操作的位都对着手册分析。找到使能中断的地方,不使能。先这样把发送调通。

谢谢你,调通了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top