当前位置: 代码迷 >> 综合 >> zigbee LED程序及串口程序
  详细解决方案

zigbee LED程序及串口程序

热度:51   发布时间:2023-12-13 12:02:27.0
/****************************
//初始化程序
*****************************/
void Initial(void)
{P1SEL &= ~0x13;//GPIOP1DIR |= 0X13;//OUTPUTP0SEL &= ~0x02;//GPIOP0DIR |= 0X02;//OUTPUT     
}
 
 
其中:
PxSEL是功能选择寄存器,PxDIR是方向选择寄存器。
P1.0、 P1.1 、P1.4 、P0.1 输出,

 

 


/****************************************************************
*串口初始化函数            
****************************************************************/
void initUART(void)
{

    CLKCONCMD &= ~0x40;                         //晶振
    while(!(SLEEPSTA & 0x40));                  //等待晶振稳定
    CLKCONCMD &= ~0x47;                         //TICHSPD128分频,CLKSPD不分频
    SLEEPCMD |= 0x04;                   //关闭不用的RC振荡器

    PERCFG = 0x00;    //位置1 P0口
    P0SEL = 0x3c;    //P0用作串口
    P2DIR &= ~0XC0;                             //P0优先作为串口0

    U0CSR |= 0x80;    //UART方式
    U0GCR |= 10;            //baud_e
    U0BAUD |= 59;    //波特率设为9600
    UTX0IF = 0;
}

/****************************************************************
*串口发送字符串函数         
****************************************************************/
void UartTX_Send_String(char *Data,int len)
{
  int j;
  for(j=0;j<len;j++)
  {
    U0DBUF = *Data++;
    while(UTX0IF == 0);
    UTX0IF = 0;
  }
}

 

串口配置:用串口助手显示

波特率:38400

数据位:8

停止位:1

校验位:None

流控制:None

main.c

/*******************************************************************************
*
*功能描述:通过串口发送数据到PC上面
*
*作者:Rfstorm studio QQ群:51109148
*
*时间:2010
*
********************************************************************************/

#include <ioCC2530.h>
#include <string.h>

#define uint unsigned int
#define uchar unsigned char

//定义控制灯的端口
#define D1 P1_0 //定义LED1为P10口控制
#define D2 P1_1 //定义LED2为P11口控制
#define D3 P1_4 //定义LED3为P14口控制
#define D4 P0_1 //定义LED4为P01口控制

//函数声明
void Delay(uint);
void initUARTtest(void);
void UartTX_Send_String(char *Data,int len);


char Txdata[16]="rfstorm stduio";

/************************************************************
*延时
*************************************************************/
void Delay(uint n)
{
 int x,y;
        for(x=n;x>0;x--)
          for(y=100;y>0;y--);
}

/************************************************************
*初始化程序
*************************************************************/
void Initial(void)
{
        P1SEL &= ~0x13;//GPIO
        P1DIR |= 0X13;//OUTPUT
        P0SEL &= ~0x02;//GPIO
        P0DIR |= 0X02;//OUTPUT

 D1 = 0;
 D2 = 0; 
        D3 = 0;
        D4 = 0;
       
}

/****************************************************************
*串口初始化函数            
****************************************************************/
void initUART(void)
{

    CLKCONCMD &= ~0x40;                         //晶振 设置系统时钟源为32MHZ晶振

    while(!(SLEEPSTA & 0x40));                  //等待晶振稳定
    CLKCONCMD &= ~0x47;                         //TICHSPD128分频,CLKSPD不分频,设置系统主时钟频率为32MHZ
    SLEEPCMD |= 0x04;                   //关闭不用的RC振荡器

    PERCFG = 0x00;    //位置1 P0口
    P0SEL = 0x3c;    //P0用作串口
    P2DIR &= ~0XC0;                             //P0优先作为串口0

    U0CSR |= 0x80;    //UART方式
    U0GCR |= 10;            //baud_e
    U0BAUD |= 59;    //波特率设为9600
    UTX0IF = 0;
}

/****************************************************************
*串口发送字符串函数         
****************************************************************/
void UartTX_Send_String(char *Data,int len)
{
  int j;
  for(j=0;j<len;j++)
  {
    U0DBUF = *Data++;
    while(UTX0IF == 0);
    UTX0IF = 0;
  }
}

void main(void)

        Initial();//初始化LED
 initUART();//初始化串口

        strcpy(Txdata,"Rfstorm studio ");        //将UART0 TX test赋给Txdata;

 while(1)
 {
           UartTX_Send_String(Txdata,sizeof("Rfstorm studio ")); //串口发送数据
            Delay(3000);                         //延时

 }
}

 编译通过以后就用TI的官方工具SmartRF Flash Programmer将生成的HEX文件,烧录到CC3025



0x 13 0001 0011

~     1110 1100

P1SEL &= ~0x13;//GPIO

这是置零操作

P1DIR |= 0X13;//OUTPUT

 

0x13 0001 0011

这是置1操作