4619|6

19

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

为什么这样串口发送数据是乱的 [复制链接]

#include
#include

#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;
}

此帖出自RF/无线论坛

最新回复

初始化代码就那么一段,一行一行看,每个寄存器,被操作的位都对着手册分析。找到使能中断的地方,不使能。先这样把发送调通。  详情 回复 发表于 2016-12-5 20:14
点赞 关注
 

回复
举报

3471

帖子

13

TA的资源

五彩晶圆(高级)

沙发
 
你是用串口助手接收的吗。波特率设对了吗,乱是怎么表现的,具体是什么数据,改变发送波特率,有什么变化, 有什么规律。最好看看发送引脚的波形。
此帖出自RF/无线论坛
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
ienglgge 发表于 2016-11-30 20:11
你是用串口助手接收的吗。波特率设对了吗,乱是怎么表现的,具体是什么数据,改变发送波特率,有什么变化, ...

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

点评

感觉是中断没调对。不用中断。先只调发送,初始化不要使能发送中断,发送过程,不用进入中断。串口助手用hex显示。  详情 回复 发表于 2016-12-1 19:50
 
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

4
 
前门扫地 发表于 2016-12-1 01:20
我while(UTX0IF == 0)注释掉后,串口助手只能显示H,波特率也是对的,感觉是中断没调对,自己又不懂调

感觉是中断没调对。不用中断。先只调发送,初始化不要使能发送中断,发送过程,不用进入中断。串口助手用hex显示。
此帖出自RF/无线论坛
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(中级)

5
 
ienglgge 发表于 2016-12-1 19:50
感觉是中断没调对。不用中断。先只调发送,初始化不要使能发送中断,发送过程,不用进入中断。串口助手用 ...

就是中断的问题,不知道怎么调
此帖出自RF/无线论坛

点评

初始化代码就那么一段,一行一行看,每个寄存器,被操作的位都对着手册分析。找到使能中断的地方,不使能。先这样把发送调通。  详情 回复 发表于 2016-12-5 20:14
 
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

6
 
前门扫地 发表于 2016-12-4 22:05
就是中断的问题,不知道怎么调

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

回复

19

帖子

0

TA的资源

一粒金砂(中级)

7
 
ienglgge 发表于 2016-12-5 20:14
初始化代码就那么一段,一行一行看,每个寄存器,被操作的位都对着手册分析。找到使能中断的地方,不使能 ...

谢谢你,调通了
此帖出自RF/无线论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表