ZigBee串口发送(非协议栈)


1还是代码亲切  直接来代码吧


<span style="font-size:18px;">#include <ioCC2530.h>
#include <string.h>

#define  uint  unsigned int
#define  uchar unsigned char

//定义控制灯的端口
#define LED1  P1_0
#define LED2  P1_1
//函数声明
void Delay(uint);
void initUARTSEND(void);
void UartTX_Send_String(char *Data,int len);

char Txdata[25]="HELLO! zigbee!\n";
/****************************************************************
    延时函数											
****************************************************************/
void Delay(uint n)
{
	uint i;
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
}
/****************************************************************
   串口初始化函数				
****************************************************************/
void initUARTSEND(void)
{

    CLKCONCMD &= ~0x40;  //系统时钟源选择  0100 0000 ~~-> 1011 1111 结果bit6一定是0 系统时间的选择 0为32kHzXOSC  1为32kHzRCOSC
    while(CLKCONSTA & 0x40); //时间频率状态寄存器 0100 0000  当前选择的系统时钟 0:32MHzXOSC 1:16MHz RCOSC
    /*
    设置了CLKCONCMD时钟钟后,需要等待一段时间让时钟稳定,当内核稳定的运行预先设定的系统时钟后CLKCONSTA中相应的标志位会变化
    */
    CLKCONCMD &= ~0x47;      // 系统主时钟选择 0100 0111 ~~-->1011 1000   //bit6 0为32M晶振 bit2-0 000为32Mhz  设置系统主时钟频率为32MHZ 
   
  
    PERCFG = 0x00; //设置部分外设的IO位置  0为默认位置1,1为默认位置2	//位置1 P0口
    P0SEL = 0x3c;//设置普通还是外设IO口  0011  1100  0为普通1为外设 串口为外设功能//P0_2,P0_3,P0_4,P0_5用作串口
    P2DIR &= ~0XC0;//1100 0000~~-->0011 1111 bit7.6肯定为0  bit7bit6:00 -->第一优先级USART0 第二优先级USART1 第三优先级定时器     //P0优先作为UART0

    U0CSR |= 0x80;//1000 0000 bit7一定为 1 ,  bit7:0为SPI模式 1为UART模式      //UART方式
    U0GCR |= 11;// BAUD_E  			       
    U0BAUD |= 216;//BAUD_M				//波特率设为19200  按说是115200????????????????
    /**
    U0GCR 的bit[4--0]与U0BAUD[7--0]一起决定了Uart的波特率
    有计算公式和列表
    */
    
    UTX0IF = 0; //串口中断标志                //UART0 TX中断标志初始置位0
    
    /**
    串口初始化思想
      首先设置系统时钟源 采用CKKCINCMD寄存器 本次系统时间选择的是32KHzXOSC
      采用while()进行保持时钟稳定
      重新对CLKCONCMD寄存器进行设置 设置主时钟的频率为32MHz
      设置外设IO口位置 设置为位置1  也就让PERCFG 全为0
      设置外设串口的IO口 P0SEL寄存器
      设置USART的优先级 使USART0 为第一优先级  使用P2DIR 
      通过U0CSR设置为UART模式
      设置波特率  比特率是根据两组寄存器共同决定的 U0GCR U0BAUD  他们有自己的计算公式与表 
      然后再将串口的中断标志为设为 0    
    
    
      寄存器参考http://wenku.baidu.com/view/6a4053a228ea81c759f57839.html?from=search
    */
}
/****************************************************************
串口发送字符串函数			
****************************************************************/
void UartTX_Send_String(char *Data,int len)
{
  int j;
  for(j=0;j<len;j++)
  {
    U0DBUF = *Data++;  //USART 0 Receive/Transmit Data Buffer  
    while(UTX0IF == 0);//中断标志 == 0 
    UTX0IF = 0;
  }
}
/****************************************************************
主函数						
****************************************************************/
void main(void)
{	
	uchar i;
       	P1DIR = 0x03; 				//P1控制LED
	LED1 = 1;
	LED2 = 0;				//关LED
	initUARTSEND();
	UartTX_Send_String(Txdata,25);	       
        for(i=0;i<30;i++)Txdata[i]=' ';
        strcpy(Txdata,"HELLO! zigbee!\n");       //将UART0 TX test赋给Txdata;
	while(1)
	{
           UartTX_Send_String(Txdata,strlen(Txdata)); //串口发送数据
            Delay(50000);                                                       //延时
            LED2=!LED2;                                           //D2灯在闪,标志发送状态
            Delay(50000);
            Delay(50000);
	}
}
</span>


不用发 项目包了吧  直接复制就好 然后配置好了。
</pre><pre name="code" class="cpp">效果图<img src="http://img.blog.csdn.net/20151219193001968?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />






你可能感兴趣的:(zigbee串口,非协议栈)