本人刚刚接触单片机和蓝牙,自己出于兴趣在做一个小的东西。今天在调一个代码,我想让单片机每秒发送一个是字符串,然后用手机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
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
是的,波特率。存在表示物理层没问题,但是乱码,那就是链路层的问题了。
一周热门 更多>