3477|9

9

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

MSP430通过蓝牙CC2540进行串口通信遇到问题 [复制链接]

10芯积分
   本人刚刚接触单片机和蓝牙,自己出于兴趣在做一个小的东西。今天在调一个代码,我想让单片机每秒发送一个是字符串,然后用手机APP接收,但是用买时赠送的手机APP显示每秒只发送了一个字节的内容,自己编写的APP显示每秒发送一个00,求问题出在哪里了啊?
下面是我的代码:

#include
int m=1;                                                                  / /m用作后面中断用
void uart_print(char *p, int len)
{
  unsigned int i;
  for(i=0;i       U1TXBUF=*p++;

  U1TXBUF=0x0a;
}



void init_uart1(void)
{
  U1CTL += CHAR;

  U1TCTL = 0x00;
  U1TCTL += SSEL1;

  UBR0_1 = 0X45;
  UBR1_1 = 0X00;
  UMCTL_1 = 0X00;

  ME2 |= UTXE1 + URXE1;
  IE2 |= URXIE1;
  IE2 |= UTXIE1;

  P3SEL = 0;
  P3SEL |= BIT6;
  P3SEL |= BIT7;

  P3DIR |= BIT6;
  return;
}



main(void)
{


    P1DIR = 0XFF;P1OUT = 0XFF;
    P2DIR = 0XFF;P2OUT = 0XFF;
    P3DIR = 0XFF;P3OUT = 0XFF;
    P4DIR = 0XFF;P4OUT = 0XFF;
    P5DIR = 0XFF;P5OUT = 0XFF;
    P6DIR = 0XFF;P6OUT = 0XFF;

    WDTCTL = WDTPW + WDTHOLD;       //关闭看门狗

    P6DIR |= BIT2;P6OUT |= BIT2;    //关闭电平转换
    CCTL0 = CCIE;                   //使能CCR0中断
    CCR0 = 4095;                    //设定周期1S               
    TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式


   init_uart1();



    _EINT();                        //使能全局中断
    LPM3;          //CPU进入LPM3模式
}




/*******************************************
函数名称:Timer_A
功    能:定时器A的中断服务函数
参    数:无
返回值  :无
********************************************/
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
{  
     if(m==0)                                                                                //这部分是控制LED等交替点亮,方便我知道进入了中断
    {
    P2OUT =0xaa;
    }
    else
     P2OUT=0x55;
    m=!m;

    uart_print("hello_world",11);                                                  //我想每秒发送一个HELLO_WORLD
}

最新回复

学习  详情 回复 发表于 2016-9-8 17:43
 
点赞 关注

回复
举报

30

帖子

3

TA的资源

一粒金砂(中级)

沙发
 
首先你串口打印的东西是否正确?uprintf(),这个你可以模拟仿真看到,或是找个usb-232,在串口终端看到。
蓝牙模块就是一个串口透传的东西,只要串口数据正确,收到的内容不会有问题,如果串口保证输出内容正确,那问题应该在app上吧,用他们给的app试着看看数据对不对。
 
 

回复

348

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
有个很好用的蓝牙软件叫lightblue ,iOS系统有这个,安卓我不知道有没有这个,很强大的功能,可以先用这个软件扫描你的设备,然后再看接受到的数据对不对,如果lightblue接受的不对的话,就是你的蓝牙发出来的问题,如果lightblue接受正确,就是你的APP的问题,(lightblue支持不同类型的数据接受可以设置的)
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

4
 
您看我程序写的有没有问题啊,APP我这里下载了一个淘宝卖家提供的,也很好用,如果发送的是空数据就不显示,00好像相当于空格吧
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

5
 
hugo0chen 发表于 2016-9-3 00:06
首先你串口打印的东西是否正确?uprintf(),这个你可以模拟仿真看到,或是找个usb-232,在串口终端看到。
...

我这个思路没问题吧?我同学说可能标志位没设正确,但是我初始化的时候都使能了啊,我用了卖家提供的手机软件,还是借不到
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

6
 
火火山 发表于 2016-9-3 08:19
有个很好用的蓝牙软件叫lightblue ,iOS系统有这个,安卓我不知道有没有这个,很强大的功能,可以先用这个 ...


您看我程序写的有没有问题啊,APP我这里下载了一个淘宝卖家提供的,也很好用,如果发送的是空数据就不显示,00好像相当于空格吧
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

7
 
我自己找到原因了,我们自己写的手机端APP,显示的是收到的十六进制,00代表空

我出错的原因在单片机和蓝牙的波特率不匹配上。

点评

是的,波特率。存在表示物理层没问题,但是乱码,那就是链路层的问题了。  详情 回复 发表于 2016-9-7 09:05
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

8
 
解答如上
 
 
 

回复

30

帖子

3

TA的资源

一粒金砂(中级)

9
 
m8246500 发表于 2016-9-4 17:13
我自己找到原因了,我们自己写的手机端APP,显示的是收到的十六进制,00代表空

我出错的原因在单片机和 ...

是的,波特率。存在表示物理层没问题,但是乱码,那就是链路层的问题了。
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

10
 
学习
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表