问答

汇集网友智慧,解决技术难题

21ic问答首页 - HC32F460串口怎么配置单线半双工模式?

hc32f460 串口 单线半双工

HC32F460串口怎么配置单线半双工模式?

ewge2024-01-19
本帖最后由 ewge 于 2024-1-19 13:18 编辑

最近做的一个用串口通信的项目,要用单线全双工和模块相互通信,看了相关例程和文档,也都不知道怎么配置单线半双工模式。还是只支持全双工通信?希望有大佬帮忙解答一下,谢谢
回答 +关注 5
777人浏览 3人回答问题 分享 举报
3 个回答
  • 首先,你需要配置串口的初始化参数,包括波特率、数据位、停止位、奇偶校验等。然后进行GPIO引脚和中断配置等
  • 建议参考HC32F460的硬件手册
  • 本帖最后由 ewge 于 2024-1-19 18:16 编辑

    我的代码如下:
    void uart2_init(uint32_t baudtate)
    {
        uint32_t u32Fcg1Periph = PWC_FCG1_PERIPH_USART1 | PWC_FCG1_PERIPH_USART2 ;
        const stc_usart_uart_init_t stcInitCfg = {
            UsartIntClkCkOutput,
            UsartClkDiv_1,
            UsartDataBits8,
            UsartDataLsbFirst,
            UsartOneStopBit,
            UsartParityNone,
            UsartSampleBit8,
            UsartStartBitFallEdge,
            UsartRtsEnable,
        };
            /* Enable peripheral clock */
        PWC_Fcg1PeriphClockCmd(u32Fcg1Periph, Enable);
            /* Initialize USART IO */
        PORT_SetFunc((en_port_t)USART2_TX_PORT, (en_pin_t)USART2_TX_PIN, Func_Usart2_Tx|Func_Usart2_Rx, Disable);
        /* Initialize UART */
        USART_UART_Init(M4_USART2, &stcInitCfg);  
        /* Set baudrate */
        USART_SetBaudrate(M4_USART2, baudtate);
        /*Enable RX && RX interupt && timeout interrupt function*/
            USART_FuncCmd(M4_USART2, UsartTx, Enable); //使能发射
            USART_FuncCmd(M4_USART2, UsartRx, Enable); //使能接收

    }

    在该模式下,使用 TX引脚进行数据的发送和接收,不占用 RX 引脚。写数据到 USARTn_DR.TDR寄存器后,UARTx_TXD 引脚立即进入发送状态,输出 USARTn_DR.TDR 寄存器中的数据。数据 发送完成后,UARTx_TXD 引脚恢复到常态的接收状态。

您需要登录后才可以回复 登录 | 注册