打印
[技术问答]

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

[复制链接]
854|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ewge|  楼主 | 2024-1-19 11:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ewge 于 2024-1-19 13:18 编辑

最近做的一个用串口通信的项目,要用单线全双工和模块相互通信,看了相关例程和文档,也都不知道怎么配置单线半双工模式。还是只支持全双工通信?希望有大佬帮忙解答一下,谢谢

使用特权

评论回复
沙发
ewge|  楼主 | 2024-1-19 18:07 | 只看该作者
本帖最后由 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 引脚恢复到常态的接收状态。

使用特权

评论回复
板凳
elephant00| | 2024-1-31 10:02 | 只看该作者
建议参考HC32F460的硬件手册

使用特权

评论回复
地板
两只袜子| | 2024-1-31 10:03 | 只看该作者
首先,你需要配置串口的初始化参数,包括波特率、数据位、停止位、奇偶校验等。然后进行GPIO引脚和中断配置等

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

12

帖子

0

粉丝