您的位置 首页 数字

msp430的USCI串口,好方法搞定

430的USCI串口(UARTmode)初始化设置十分繁杂,UCA0BR0UCA0BR1UCA0MCTL等还需按照波特率计算,并且有小数部分微调,在这里共享…

430USCI串口(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等。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/277143.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部