MSP430F5529学习笔记(五)——串口|UART

        我们在使用MSP430的时候大家会发现插上usb线后电脑上有两个端口标识,那么在进行串口通信时选择哪个呢。其实如图所示,上面的端口是用来进行串口通信的,下面的则是用来进行程序的下载,大家在使用的时候多加分辨即可。

         当然熟悉单片机操作的人可以通过经验判断图中标注UART1的即为串口通信端口,接下来我们就进入MSP430F5529串口的学习,通过学习串口我们可以更好的进行上下位机通信,主从机交互等场景的信息交互。

串口端口配置

        与使用其他功能一样我们首先对串口进行基础的配置,如果想使用电脑USB下载线进行与电脑的通信请选择P4.4,P4.5端口(UART1),如使用排针IO的串口请选择P3.4,P3.5端口(UART0),在对应配置时需更改寄存器编号实现对应的功能,以下以UART1为例,如果想使用UART1,可使用板载usb口或在下载完成后拔掉仿真电路与核心电路间的跳线帽,使用跳线引出:

    P4SEL    |=  BIT4+BIT5 ;// USCI_A1 TXD/RXD
    UCA1CTL1 |=  UCSWRST;// 初始化所有的 UCSI 寄存器,包括UCA0CTL1
    UCA1CTL1 |=  UCSSEL_1;// ACLK
    UCA1BR0   =  0x03;// 32768Hz 9600 波特率为9600
    UCA1BR1   =  0x00;// 32768Hz 9600
    UCA1MCTL |=  UCBRS_3 + UCBRF_0;// 低频调制+过采样调制
    UCA1CTL1 &= ~UCSWRST;// 初始化USCI状态机
    UCA1IE   |=  UCRXIE;//使能中断

串口信息的读取

        串口的读取在配置时首先开启UCRXTE中断,然后进入函数内通过:

(UCA1IFG)&(UCRXIFG)

  进行对中断接收信号的判断,以下为串口的读取:

#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
    UCA1IFG &= ~UCRXIFG;
    if((UCA1IFG)&(UCRXIFG));//接收
        c=UCA1RXBUF;
}

串口信息的发送

      串口的发送在配置时首先开启UCRXTE中断,然后进入函数内通过:

!(UCA1IFG & UCTXIFG)

  进行对发送信号的判断,以下为串口的发送:

//以串口1为例,发送字符串
void send1_buf_int(unsigned int *ptr) 
{
    while(*ptr != '\0')
    {
        while(!(UCA1IFG & UCTXIFG));
        UCA1TXBUF = *ptr;
        ptr++;
        delay(10);
    }
}

与蓝牙的通信

        蓝牙是经典的串口通信案例,通过蓝牙可以扩展出主从机,串口屏等一系列串口项目的代码操作,通过数据的收发和检测实现对应的操作,以下为MSP430与蓝牙的简单点灯程序参考:

#pragma vector=USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
{
    UCA1IFG &= ~UCRXIFG;
    if((UCA1IFG)&(UCRXIFG));//接收
    {
    c=UCA1RXBUF;
    if(c == 'a')
           {
               P4OUT &= ~BIT7;
               P1OUT |= BIT0;
           }
    else if(c =='b')
           {
               P1OUT &= ~BIT0;
               P4OUT |= BIT7;
           }
    }
    else 
        break;

    }
}
物联沃分享整理
物联沃-IOTWORD物联网 » MSP430F5529学习笔记(五)——串口|UART

发表评论