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

2019-03-24 08:59发布

   本人刚刚接触单片机和蓝牙,自己出于兴趣在做一个小的东西。今天在调一个代码,我想让单片机每秒发送一个是字符串,然后用手机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
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
hugo0chen
1楼-- · 2019-03-24 16:43
 精彩回答 2  元偷偷看……
火火山
2楼-- · 2019-03-24 19:18
< :TI_MSP430_内容页_SA7 --> 有个很好用的蓝牙软件叫lightblue ,iOS系统有这个,安卓我不知道有没有这个,很强大的功能,可以先用这个软件扫描你的设备,然后再看接受到的数据对不对,如果lightblue接受的不对的话,就是你的蓝牙发出来的问题,如果lightblue接受正确,就是你的APP的问题,(lightblue支持不同类型的数据接受可以设置的)
m8246500
3楼-- · 2019-03-24 23:19
您看我程序写的有没有问题啊,APP我这里下载了一个淘宝卖家提供的,也很好用,如果发送的是空数据就不显示,00好像相当于空格吧
m8246500
4楼-- · 2019-03-25 01:49
 精彩回答 2  元偷偷看……
m8246500
5楼-- · 2019-03-25 05:33
火火山 发表于 2016-9-3 08:19
有个很好用的蓝牙软件叫lightblue ,iOS系统有这个,安卓我不知道有没有这个,很强大的功能,可以先用这个 ...


您看我程序写的有没有问题啊,APP我这里下载了一个淘宝卖家提供的,也很好用,如果发送的是空数据就不显示,00好像相当于空格吧
m8246500
6楼-- · 2019-03-25 06:21
我自己找到原因了,我们自己写的手机端APP,显示的是收到的十六进制,00代表空

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

一周热门 更多>

相关问题

    相关文章