#include<msp430f5529.h>
#include<string.h>
#define M 63
#define EN BIT0
#define BRTS BIT1
#define BCTS BIT2
static unsigned int connect_ready=0,wireless=0;
int i,j;
unsigned char send_data[M]={"12 BRM\n34 BRM\n56 BRM\n78 BRM\n90 BRM\n,, BRM\n.. BRM\n== BRM\n-- BRM\n"},rev_state[20];
char box[9]="TTM:OK\r\n\0";
void ble_time()
{
const char command[13]="TTM:CIT-200ms";
do
{
P6OUT &= ~BRTS;
for(i=0;i<1;i++)
for(j=0;j<100;j++);
for(i=0;i<13;i++)
if(UCA1IFG & UCTXIFG)
{
UCA1TXBUF = command[i];
for(j=0;j<1000;j++);
}
for(i=0;i<10;i++)
for(j=0;j<1000;j++);
P6OUT |= BRTS;
for(i=0;i<100;i++)
for(j=0;j<1000;j++);
}
while(connect_ready==2);
}
void BLUETOOTH_INIT()
{
P6OUT |= BRTS ;
P6OUT &= ~EN;
while(connect_ready==0)
{
P4OUT ^= BIT7;
for(i=0;i<100;i++)
for(j=0;j<1000;j++);
}
P4OUT |= BIT7;
ble_time();
}
void UART_INIT(void)
{
P4SEL |= BIT4 + BIT5;
UCA1CTL0 = 0;
UCA1CTL1 |= UCSWRST;
UCA1CTL1 |= UCSSEL_1;
UCA1BR0 = 3;
UCA1BR1 = 0;
UCA1MCTL = UCBRS_3 + UCBRF_0;
UCA1CTL1 &= ~UCSWRST;
UCA1IE |= UCRXIE;
}
void main(void)
{
WDTCTL = WDTHOLD + WDTPW;
P6DIR |= BRTS + BCTS + EN;
P4DIR |= BIT7;
P1DIR &= ~BIT1;
P6OUT |= EN;
P4OUT &= ~BIT7;
P1REN |= BIT1;
P1OUT |= BIT1;
P1IES |= BIT1;
P1IFG &= ~BIT1;
P1IE |= BIT1;
UART_INIT();
_EINT();
while(!wireless);
BLUETOOTH_INIT();
while(1)
{
P6OUT &= ~BRTS;
for(i=0;i<1;i++)
for(j=0;j<100;j++);
for(i=0;i<M;i++)
if(UCA1IFG & UCTXIFG)
{
UCA1TXBUF = send_data[i];
for(j=0;j<1000;j++);
}
for(i=0;i<100;i++)
for(j=0;j<1000;j++);
P6OUT |= BRTS;
}
}
#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
static int redex=0;
rev_state[redex++]=UCA1RXBUF;
if(rev_state[redex-1]=='\0')
{
redex=0;
if(!strcmp(rev_state,box))
connect_ready+=1;
}
}
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
P4OUT ^= BIT7;
wireless=1;
P1IFG &= ~BIT1;
}
评论15