- 通过右键 go to definition 找到函数 HalUARTOpen(), 打开发现有两个很重要的宏定义
(HAL_UART_DMA 和 HAL_UART_ISR ):
2)对 HAL_UART_DMA 和 HAL_UART_ISR 进行查看, 发现在 hal_board_cfg.h 里, 有定
义:
回到文件 hal_uart.c, 查看串口的初始化函数 HalUARTInit()里的串口 1 初始化函数(在文
件_hal_uart_isr.c 里):跳转路径的顺序:HalUARTOpen/HalUARTOpenISR/_hal_uart_iar.c
static void HalUARTInitISR(void)
{
// Set P2 priority - USART0 over USART1 if both are defined.
P2DIR &= ~P2DIR_PRIPO;
P2DIR |= 0x40; //uart1 优先, uart 第二
#if (HAL_UART_ISR == 1)
PERCFG &= ~HAL_UART_PERCFG_BIT; // Set UART0 I/O location to P0.
#else
PERCFG &= ~HAL_UART_PERCFG_BIT; // 备用位置 0 (P04.P05)
#endif
PxSEL |= HAL_UART_Px_RX_TX; // Enable Tx and Rx on P1.
ADCCFG &= ~HAL_UART_Px_RX_TX; // Make sure ADC doesnt use this.
UxCSR = CSR_MODE; // Mode is UART Mode.
UxUCR = UCR_FLUSH; // Flush it.
} 因
为我们使用的是位置 0, 寄存器的重定义我们也要注意思修改(在_hal_uart_isr.c 里):
搞定!