微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > CC2430 uart通信模式

CC2430 uart通信模式

时间:10-02 整理:3721RD 点击:
先贴完整的源程序
#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,这是怎么回事 ?为什么?

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

网站地图

Top