×
嵌入式 > 技术百科 > 详情

msp430的USCI串口,妙招搞定

发布时间:2020-06-02 发布时间:
|
430的USCI串口(UART mode)初始化设置十分繁杂, UCA0BR0 UCA0BR1 UCA0MCTL 等还需按照波特率计算,并且有小数部分微调,在这里共享一个头文件,在操作串口时,只要一个init_uart(9600);就全搞定,注:9600还能改成4800 115200等其他波特率,十分方便。

#define clock 8000000
#define UCBRS(x) UCBRS_##x

void uart_init(long baud)
{
float x = clock / baud ;
long y = clock / baud ;
char n;
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; 
UCA0CTL1|=UCSSEL_2 ;

UCA0BR0 = y % 256; 
UCA0BR1 = y / 256;

n=(char)((x-y)*8);
UCA0MCTL=2*n; //UCBRS_n n为*2 
UCA0CTL1 &= ~UCSWRST; 
IE2 |= UCA0RXIE ; 
}

UCA0MCTL=2*n; 这里是移位操作,详情请看register。

当然,时钟修改了的话,也要记得把clock修改一下。

好用的话,大家支持一个吧,下面我把头文件共享,支持printf,getchar等。

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ADI 高精度低功耗精密放大器