【原创】Zstack如何配置双串口!绝对干货,目前网上还没有这么清楚准确的解释!

  1. 通过右键 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 里):

在这里插入图片描述
在这里插入图片描述
搞定!

猜你喜欢

转载自blog.csdn.net/qq_43010942/article/details/86748710