CC2530的串口实验主要有编程主要有一下几个步骤:
一、串口初始化函数(设置时钟频率-->选择用来当做串口的IO-->设置波特率-->发送中断设为0)
二、字符串发送函数(U0DBUF填充字符-->等待串口发送完毕-->发送中断标志设为0,准备下次发送
代码如下:
#include <ioCC2530.h>
#include <string.h>
#define YLED P1_0
#define BLED P1_1
#define LIGHTOPEN 1
#define LIGHTCLOSE 0
#define uint unsigned int
#define uchar unsigned char
void Delay(uint n);
void Init_UsartSend();
void Uart0_Send_String(char *Data,int len);
char Txdata[25]="hello world";
/**************************
*@ brief 延时函数
**************************/
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++);
}
/**************************
*@brief 串口及IO口的初始化函数
**************************/
void Init_UsartSend()
{
P1DIR |= 0x03; //P1.0和P1.1设置为输出
YLED = LIGHTOPEN;
BLED = LIGHTOPEN;
CLKCONCMD &= ~0X40; //设置系统时钟源为32MHz晶振
while(CLKCONSTA&0X40); //等待晶振稳定
CLKCONCMD &= ~0X47; //设置系统主时钟频率为32MHz
PERCFG = 0X00; //设置外设控制为P0
P0SEL = 0X3C; //选择P0.2,P0.3,P0.4,P0.5作为串口
P2DIR &= ~0XC0; //P0优先级作为UART0
U0CSR |= 0X80; //UART方式
U0GCR |= 9;
U0BAUD |= 59; //波特率设置为19200
UTX0IF |= 0; //UART0 TX 中断标志初始置为0
}
/**************************
* @brief 串口发送函数
* @param Data - 数据指针
len - 数据长度
**************************/
void Uart0_Send_String(char *Data,int len)
{
uint i;
for(i=0;i<len;i++)
{
U0DBUF = *Data++; //将数据填充到串口数据寄存器
while(UTX0IF==0); //等待串口发送完毕
UTX0IF=0; //将串口中断置为0,准备下一次的发送
}
}
/************************
* @brief 主函数
************************/
main()
{
uchar i;
Init_UsartSend();
Uart0_Send_String(Txdata,25);
for(i=0;i<25;i++)
{
Txdata[i] = ' ';
}
strcpy(Txdata," 我爱你 ");
/*一直使用串口发送数据*/
while(1)
{
Uart0_Send_String(Txdata,sizeof(" 我爱你 "));
Delay(50000);
BLED=!BLED;
Delay(50000);
Delay(50000);
}
}