MSP430通过蓝牙CC2540进行串口通信问题

[复制链接]
 楼主| Ryze 发表于 2017-1-31 19:35 | 显示全部楼层 |阅读模式
刚刚接触单片机和蓝牙,自己出于兴趣在做一个小的东西。今天在调一个代码,我想让单片机每秒发送一个是字符串,然后用手机APP接收,但是用买时赠送的手机APP显示每秒只发送了一个字节的内容,自己编写的APP显示每秒发送一个00,求问题出在哪里了啊?
下面是我的代码:

#include <MSP430X14X.h>
int m=1;                                                                  / /m用作后面中断用
void uart_print(char *p, int len)
{
  unsigned int i;
  for(i=0;i<len;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
}
Varus 发表于 2017-1-31 19:50 | 显示全部楼层
首先你串口打印的东西是否正确?uprintf(),这个你可以模拟仿真看到,或是找个usb-232,在串口终端看到。
Snow7 发表于 2017-1-31 20:03 | 显示全部楼层
蓝牙模块就是一个串口透传的东西,只要串口数据正确,收到的内容不会有问题,如果串口保证输出内容正确,那问题应该在app上吧,用他们给的app试着看看数据对不对。
android2 发表于 2017-1-31 20:12 | 显示全部楼层
有个很好用的蓝牙软件叫lightblue ,iOS系统有这个,安卓我不知道有没有这个,很强大的功能,可以先用这个
拉克丝 发表于 2017-1-31 20:23 | 显示全部楼层
软件扫描你的设备,然后再看接受到的数据对不对,如果lightblue接受的不对的话,就是你的蓝牙发出来的问题,如果lightblue接受正确,就是你的APP的问题,(lightblue支持不同类型的数据接受可以设置的)
309030 发表于 2017-1-31 20:36 | 显示全部楼层
程序写的有没有问题??
迪卡 发表于 2017-1-31 20:52 | 显示全部楼层
可能标志位没设正确
米尔豪斯 发表于 2017-1-31 21:15 | 显示全部楼层
会不会波特率不匹配
lefeng 发表于 2017-1-31 21:29 | 显示全部楼层
存在表示物理层没问题,但是乱码,那就是链路层的问题了。
backlugin 发表于 2017-2-1 21:16 | 显示全部楼层
没有接收到数据了。
backlugin 发表于 2017-2-1 21:17 | 显示全部楼层
串口数据接收不到,你用示波器测量一下。
usysm 发表于 2017-2-2 22:09 | 显示全部楼层
程序不是有问题,可能不稳定造成的
usysm 发表于 2017-2-2 22:17 | 显示全部楼层
最开始初始化的时候,先将IO设置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

121

主题

714

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部