2525|0

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

CC2430 uart通信模式 [复制链接]

先贴完整的源程序
 #include "ioCC2430.h"

#define uchar unsigned char

uchar dat1[]="Hello,ZigBee!";

void initclk(void)
{  
  CLKCON&=~0x40;//选择晶振
  while(!(SLEEP & 0x40));//等待晶振稳定
  SLEEP|=0x04;
}


void initio(void)
{
 P0SEL|=0x0c; 
}

void inituart(void)
{
  IEN0|=0x84;//总中断,接收中断使能
  U0CSR|=0xc0;//UART模式,允许接收
  
  U0GCR=10;
  U0BAUD=59;
}

void UART_send_string(uchar *data,uchar len)
{
  uchar i;
  for(i=0;i<len;i++)
  {
  U0DBUF=*data++;
  while(!UTX0IF);
  UTX0IF=0;
  }
}

void main(void)
{
  initio();
  initclk();
  inituart();
  UART_send_string(dat1,13);
  while(1);
  
}

#pragma vector=URX0_VECTOR
__interrupt void UART0_IRQ(void)
{
 URX0IF=0;
 U0DBUF=U0DBUF;
 while(!UTX0IF);
 UTX0IF=0;




上面的主函数对I/O 晶振等进行了初始化,但在下面的中断程序我就弄不懂了,上面传数据时是一个一个字符传过去的,但中断中给的函数是将发给2430的数据再返回来。问题是怎样读取返回来的数据,还是一个一个字节读回来吗?中断函数是不是一直在运行?
后来我在中断函数里加了一句“while(key);"key对应的是一个按键,不按的时候为1,按的时候是0,问题是我加了这句以后只能返回来头一个字节了,比如我发送的数据时“dredfff”,只能返回来一个d,这是怎么回事 ?为什么?

此帖出自RF/无线论坛
点赞 关注
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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