/****************************
//初始化程序
*****************************/
void Initial(void)
{
P1SEL &= ~0x13;//GPIO
P1DIR |= 0X13;//OUTPUT
P0SEL &= ~0x02;//GPIO
P0DIR |= 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操作