我们在使用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)
进行对发送信号的判断,以下为串口的发送:文章来源:https://www.toymoban.com/news/detail-596220.html
//以串口1为例,发送字符串
void send1_buf_int(unsigned int *ptr)
{
while(*ptr != '\0')
{
while(!(UCA1IFG & UCTXIFG));
UCA1TXBUF = *ptr;
ptr++;
delay(10);
}
}
与蓝牙的通信
蓝牙是经典的串口通信案例,通过蓝牙可以扩展出主从机,串口屏等一系列串口项目的代码操作,通过数据的收发和检测实现对应的操作,以下为MSP430与蓝牙的简单点灯程序参考:文章来源地址https://www.toymoban.com/news/detail-596220.html
#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;
}
}
到了这里,关于MSP430F5529学习笔记(五)——串口|UART的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!