查询引脚复用图,可以看到,PA的1,2管脚的ALT2正是串口的发送接收功能,如图所示。
第二个函数的参数是一个指向结构体的指针,这个结构体封装了设置UART所需要的波特率和系统时钟。UART0_ConfigTransfer()函数就利用这个结构体传进来的数值进行设置,主要是进行了波特率的设置和数据传输格式的设置。这部分代码已经有了注释,大家依照手册来看就可以了。 bool UART0_ConfigTransfer(const UART_Config_T *configPtr)
{
uint16_t sbr_val;
/* Disable the Rx and Tx. 设置寄存器之前先关闭RX和TX*/
UART0->C2 &= ~(UART0_C2_TE_MASK | UART0_C2_RE_MASK);
/* configure uart1 for 8-bit mode , no parity */
UART0->C1 = 0U;
/* calculate the sbr value. 通过BDH和BDL设置波特率 */
sbr_val = (configPtr->BusClkHz >> 4)/configPtr->Baudrate;
UART0->BDH = (uint8_t)(((0x1F00 & sbr_val) >> 8)&UART0_BDH_SBR_MASK);
UART0->BDL = (uint8_t)(sbr_val & UART0_BDL_SBR_MASK);
UART0->C3 = 0U;
UART0->S1 = 0x1FU;
UART0->S2 = 0U;
/* enable the tx and rx 使能RX和TX*/
UART0->C2 |= (UART0_C2_TE_MASK | UART0_C2_RE_MASK);
return true;
}
|