串口是比较常用的开发中比较常用的部分了,这部分难点就是波特率的设置了,为此还特地下了篇英文手册,硬着头皮看了下,学会如何配置了,下面就是串口初始化部分
void myuart_init()
{
//P3.3,4 = USCI_A0 TXD/RXD
GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P3,GPIO_PIN3 + GPIO_PIN4);
//Baudrate = 9600, clock freq = 4MHz
//UCBRx = 26, UCBRFx = 1, UCBRSx = 0, UCOS16 = 1
USCI_A_UART_initParam param = {0};
param.selectClockSource = USCI_A_UART_CLOCKSOURCE_SMCLK;
param.clockPrescalar = 26;
param.firstModReg = 1;
param.secondModReg = 0;
param.parity = USCI_A_UART_NO_PARITY;
param.msborLsbFirst = USCI_A_UART_LSB_FIRST;
param.numberofStopBits = USCI_A_UART_ONE_STOP_BIT;
param.uartMode = USCI_A_UART_MODE;
param.overSampling = USCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION;
if (STATUS_FAIL == USCI_A_UART_init(USCI_A0_BASE, ¶m))
{
return;
}
//Enable UART module for operation
USCI_A_UART_enable(USCI_A0_BASE);
//Enable Receive Interrupt
USCI_A_UART_clearInterrupt(USCI_A0_BASE,USCI_A_UART_RECEIVE_INTERRUPT);
USCI_A_UART_enableInterrupt(USCI_A0_BASE,USCI_A_UART_RECEIVE_INTERRUPT);
}
看到这一部分大家就应该比较眼熟了,有点类似32的uart初始化,但不同的是波特率部分,需要根据时钟源进行计算。这里我选择的是SMCLK,时钟配置沿袭了上一篇文章的配置,也就是SMCLK为4MHz。那么具体怎么设置呢?这里就只能参看英文手册了,这一部分截图如下
大体思路就是先计算N