为什么这样串口发送数据是乱的
时间: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;
}
#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显示。
就是中断的问题,不知道怎么调
初始化代码就那么一段,一行一行看,每个寄存器,被操作的位都对着手册分析。找到使能中断的地方,不使能。先这样把发送调通。
谢谢你,调通了
