void Uart_Init(void) { /*使能P4.4/P4.5端口复用*/ P4SEL |= BIT4+BIT5 ; /*Uart Init*/ UCA1CTL1 |= UCSWRST; //复位USCI_A1 UCA1CTL1 |= UCSSEL__SMCLK; //选择SMCLK为Uart时钟源@1Mhz UCA1BR0 |= 0x23; UCA1BR1 |= 0x08; //see user's guid. bps set as 9600@1Mhz UCA1MCTL |= UCBRS2 + UCBRF_0; //UCBRS = 1,UCBRF = 0 /*清除复位,使能Uart*/ UCA1CTL1 &= ~UCSWRST; /*使能中断*/ UCA1IE |= UCRXIE; //开启接收中断 UCA1IFG &= ~UCRXIFG; //清除中断标志位 _EINT(); //使能总中断 }
时间: 2023-11-18 11:02:19 浏览: 152
Uart.rar_CVI UART_cvi 串口_labwindow_labwindow/cvi_uart use cvi
这段代码是用于初始化并配置串口通信的函数`Uart_Init`。
首先,通过设置`P4SEL`寄存器的位4和位5,将P4.4和P4.5端口设置为UART模式。
接着,对UART进行初始化配置。首先,将`UCA1CTL1`寄存器的`UCSWRST`位设置为1,将UART模块进行复位。然后,将`UCA1CTL1`寄存器的`UCSSEL`位设置为2,选择SMCLK作为UART的时钟源,时钟频率为1MHz。接下来,将`UCA1BR0`寄存器设置为0x23,将`UCA1BR1`寄存器设置为0x08,这样可以设置波特率为9600(在1MHz时钟源下)。最后,通过设置`UCA1MCTL`寄存器的`UCBRS2`位和`UCBRF`位,将波特率调整为9600。
然后,通过将`UCA1CTL1`寄存器的`UCSWRST`位清零,释放UART模块的复位状态,使能UART。
接下来,通过设置`UCA1IE`寄存器的`UCRXIE`位,开启接收中断。然后通过将`UCA1IFG`寄存器的`UCRXIFG`位清零,清除中断标志位。
最后,通过调用`_EINT()`函数使能总中断。
需要注意的是,这段代码中使用的寄存器和位操作是针对特定的MCU,如果你的硬件不是基于该MCU,可能需要根据你的硬件和开发环境进行相应的修改。
阅读全文