打印

CC2530单片机,菜鸟问个串口通信接收问题

[复制链接]
1765|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
晴天娃娃1|  楼主 | 2018-1-19 20:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ohy3686| | 2018-1-19 23:23 | 只看该作者
1.是放在U0DBUF。
2.只能放一个字节。
3.是一位一位发送的。
可以参考帖子:
https://bbs.21ic.com/icview-1852498-1-1.html

使用特权

评论回复
板凳
dirtwillfly| | 2018-1-20 07:36 | 只看该作者
ohy3686 发表于 2018-1-19 23:23
1.是放在U0DBUF。
2.只能放一个字节。
3.是一位一位发送的。

给楼上点个赞

使用特权

评论回复
地板
晴天娃娃1|  楼主 | 2018-1-20 13:44 | 只看该作者
ohy3686 发表于 2018-1-19 23:23
1.是放在U0DBUF。
2.只能放一个字节。
3.是一位一位发送的。

谢谢大神,真的很感谢,很有帮助,再问一个,U0DBUF把值给变量,是直接给变量,还是复制过去后,自己清掉自己缓存区的啊?给了之后立即发生中断标志位1对吧?

使用特权

评论回复
5
晴天娃娃1|  楼主 | 2018-1-20 13:54 | 只看该作者
#include<ioCC2530.h>
#include<string.h>

#define LED1 P1_0
#define LED2 P1_1

#define uint unsigned int
#define uchar unsigned char
#define DATABUFF_SIZE 3

uchar buff_RxDat[DATABUFF_SIZE+1];
uchar uIndex=0;

void initUART0(void)
{
    PERCFG=0x00;
    P0SEL=0x3c;
    U0BAUD=216;
    U0GCR=10;
    U0CSR|=0x80;
    U0UCR|=0x80;
    URX0IF=0;
    U0CSR|=0x40;
    EA=1;
}

void receive_handler(void)
{
  uchar onoff=0;
  uchar c;
  c=U0DBUF;
  if(c=='#')
  {
    buff_RxDat[0]=c;
    uIndex=0;
  }
  else if(buff_RxDat[0]=='#')
  {
    uIndex++;
    buff_RxDat[uIndex]=c;
  }
  if(uIndex>=2)
  {
    onoff=buff_RxDat[2]-0x30;
    switch(buff_RxDat[1])
    {
      case'1':
        LED1=onoff;
        break;
      case'2':
        LED2=onoff;
        break;
    }
    for(int i=0;i<DATABUFF_SIZE;i++)
    {
      buff_RxDat[i]=(uchar)NULL;
      uIndex=0;
    }
  }
}
void main()
{
  P1SEL&=~0x03;
  P1DIR|=0x03;
  LED1=0;
  LED2=0;
  CLKCONCMD&=0x80;
  initUART0();
  while(1)
    if(URX0IF)
    {
      URX0IF=0;
      receive_handler();
    }
}这程序onoff=buff_RxDat[2]-0x30;这里是怎么赋值的,计算出来的值怎么对应下面程序啊,onoff值为多少。 当我发送#10 LED1关 #11 LED1开      #21 LED2 开 #22 LED2关  麻烦帮帮我, 拜托了

使用特权

评论回复
6
ohy3686| | 2018-1-20 14:08 | 只看该作者
晴天娃娃1 发表于 2018-1-20 13:44
谢谢大神,真的很感谢,很有帮助,再问一个,U0DBUF把值给变量,是直接给变量,还是复制过去后,自己清掉 ...

你问的是串口读取数据吧
U0DBUF的值复制后复制给变量
自己不需要清除缓存区
当接收到下一个字节的时候,新的数据会自动覆盖U0DBUF

使用特权

评论回复
7
晴天娃娃1|  楼主 | 2018-1-20 14:24 | 只看该作者
ohy3686 发表于 2018-1-20 14:08
你问的是串口读取数据吧
U0DBUF的值复制后复制给变量
自己不需要清除缓存区

哦哦,这样啊,真的很感谢您啊 ,麻烦您了

使用特权

评论回复
8
ohy3686| | 2018-1-20 16:40 | 只看该作者
晴天娃娃1 发表于 2018-1-20 14:24
哦哦,这样啊,真的很感谢您啊 ,麻烦您了

不客气

使用特权

评论回复
9
caijie001| | 2018-1-21 17:19 | 只看该作者
留名点赞

使用特权

评论回复
10
zqx1000| | 2018-4-10 19:26 | 只看该作者
kankan

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝