[技术问答] HC32F460串口怎么配置单线半双工模式?

[复制链接]
1518|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 编辑

我的代码如下:
  1. void uart2_init(uint32_t baudtate)
  2. {
  3.     uint32_t u32Fcg1Periph = PWC_FCG1_PERIPH_USART1 | PWC_FCG1_PERIPH_USART2 ;
  4.     const stc_usart_uart_init_t stcInitCfg = {
  5.         UsartIntClkCkOutput,
  6.         UsartClkDiv_1,
  7.         UsartDataBits8,
  8.         UsartDataLsbFirst,
  9.         UsartOneStopBit,
  10.         UsartParityNone,
  11.         UsartSampleBit8,
  12.         UsartStartBitFallEdge,
  13.         UsartRtsEnable,
  14.     };
  15.         /* Enable peripheral clock */
  16.     PWC_Fcg1PeriphClockCmd(u32Fcg1Periph, Enable);
  17.         /* Initialize USART IO */
  18.     PORT_SetFunc((en_port_t)USART2_TX_PORT, (en_pin_t)USART2_TX_PIN, Func_Usart2_Tx|Func_Usart2_Rx, Disable);
  19.     /* Initialize UART */
  20.     USART_UART_Init(M4_USART2, &stcInitCfg);  
  21.     /* Set baudrate */
  22.     USART_SetBaudrate(M4_USART2, baudtate);
  23.     /*Enable RX && RX interupt && timeout interrupt function*/
  24.         USART_FuncCmd(M4_USART2, UsartTx, Enable); //使能发射
  25.         USART_FuncCmd(M4_USART2, UsartRx, Enable); //使能接收

  26. }

在该模式下,使用 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

主题

14

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部