CC2530串口收发数据

ZigBee/CC2530

发送数据

发送字符

void Send_Byte(unsigned char content)
{
    U0DBUF = content;
    while(UTX0IF == 0);
    UTX0IF = 0;
}

发送字符串

void Send_String(unsigned char *content)
{
    while(*content != '\0')
    {
        Send_Byte(*content++);
    }
}

接收数据

接收字符数据

#pragma vector = URX0_VECTOR
__interrupt void URX0_ISR(void)
{
    if(U0DBUF == 0xA1) P1_0 = !P1_0;
}

接收字符串数据

unsigned char usart_rx_data_buffer[16];  //数据缓冲数组
unsigned char usart_buffer = 0;   //数据缓冲字符
int usart_rx_index = 0, utx0if = 0;    //串口数据接收索引 串口接收标识符


/*
数据接收中断,每次只能接收单字符,两个紧挨数据接收时间间隔较短,要注意的是在中断函数中接收数据缓冲区只能用单字符
*/
#pragma vector = URX0_VECTOR
__interrupt void URX0_ISR(){
  usart_buffer = U0DBUF;
  utx0if = 1;
}

/*
清理缓冲区数据
*/
void ClearData(){
  usart_rx_index = 0;
  memset(usart_rx_data_buffer, 0, sizeof(usart_rx_data_buffer));
}


/********************MAIN************************/
void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码
   
    while(1)
    {
    /* user code start */
      //注意接收数据请不要加延时以免造成原数据被覆盖导致丢失数据
      //判断标志位为1,已接收数据,可以读取
      if(utx0if){
        //清除标志位
        utx0if = 0;
        //为数据接收缓冲区赋值,索引加1
        usart_rx_data_buffer[usart_rx_index++] = usart_buffer;
        //数据缓冲字符区域清空
        usart_buffer = 0;

        //判断接收到的字符串是否与下面条件成立
        if(strcmp("LampToggle@", (const char *)usart_rx_data_buffer) == 0) {
          //读取到LampToggle@数据执行此作用域代码
            
          ClearData();
        }

        //为了使接收的数据能正常判断需要加一项协议,用于判断字符串结束接收的协议,这里以@符号规定
        //判断是否接收到结束命令,收到后立马清除数据,注意清除的时候要让索引 - 1,因为你在前面让索引后++了1,所以要剪掉才能取到刚读的数据
        if(usart_rx_data_buffer[usart_rx_index - 1] == '@') ClearData();
      }
    /* user code end */
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值