[APM32F0] 请教,关于APM32F072 USART4引脚交换问题

[复制链接]
694|14
davidloon 发表于 2025-9-1 19:58 | 显示全部楼层 |阅读模式
void Usart4_Initial(void)
{
     GPIO_Config_T gpioConfig;
    USART_Config_T usartConfigStruct;  

        RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOC);
        RCM_EnableAPB1PeriphClock(RCM_APB1_PERIPH_USART4);
       
        GPIO_ConfigPinAF(GPIOC, GPIO_PIN_SOURCE_10, GPIO_AF_PIN0);        /* Connect PXx to USARTx_Tx */
        GPIO_ConfigPinAF(GPIOC, GPIO_PIN_SOURCE_11, GPIO_AF_PIN0);        /* Connect PXx to USARTx_Rx */
        USART_EnableSWAPPin(USART4);
    /* Configure USART Tx as alternate function push-pull */
    /* Configure USART Rx as input floating */
     gpioConfig.mode = GPIO_MODE_AF;
     gpioConfig.pin = GPIO_PIN_10 | GPIO_PIN_11;
     gpioConfig.speed = GPIO_SPEED_50MHz;
     gpioConfig.outtype = GPIO_OUT_TYPE_PP;
     gpioConfig.pupd = GPIO_PUPD_PU;
     GPIO_Config(GPIOC, &gpioConfig);
       
    /* MINI_USARTs configured as follow: */
    /* BaudRate = 115200 baud */
    usartConfigStruct.baudRate = 115200;                                        /* BaudRate = 115200 baud */
    usartConfigStruct.mode     = USART_MODE_TX_RX;                                /* Receive and transmit enabled */
    usartConfigStruct.hardwareFlowCtrl = USART_FLOW_CTRL_NONE;        /* Hardware flow control disabled (RTS and CTS signals) */
    usartConfigStruct.parity   = USART_PARITY_NONE;                /* No parity */
    usartConfigStruct.stopBits =  USART_STOP_BIT_1;                /* One Stop Bit */
    usartConfigStruct.wordLength = USART_WORD_LEN_8B;        /* Word Length = 8 Bits */
    USART_Config(USART4, &usartConfigStruct);                /* USART_Config */

    /* Enable USART_Interrupt_RXBNEIE */
    USART_EnableInterrupt(USART4, USART_INT_RXBNEIE);

        NVIC_EnableIRQRequest(USART3_4_IRQn, 2);

    /* Enable USART */
    USART_Enable(USART4);
}
USART4按上述配置后,P10/P11引脚交换, TX发不出信号,RX接收没有问题。如果不配置交换引脚功能,TX是可以发出信号的。想请教这个问题怎么解决
Gfan 发表于 2025-9-3 14:30 | 显示全部楼层
hi,我们在开发者论坛上也有回复哈,担心没看到,所以这边也回复一下



我们测试过,确实是这样,有可能是板子上TX/RX画反了,有如下建议哈:
  • 如果选用USART4,不要用交叉模式(交叉无效);
  • 使用USART1/ 2/ 3, (建议复用USART3),再使用交叉模式
  • 8423468b7dce447b89.png

https://community.geehy.cn/d/116 ... fa-bu-chu-xin-hao/3


 楼主| davidloon 发表于 2025-9-3 15:20 | 显示全部楼层
Gfan 发表于 2025-9-3 14:30
hi,我们在开发者论坛上也有回复哈,担心没看到,所以这边也回复一下

好的,谢谢!因为看到资料上说明能交换,为方便画板交换了。
 楼主| davidloon 发表于 2025-9-3 15:21 | 显示全部楼层
Gfan 发表于 2025-9-3 14:30
hi,我们在开发者论坛上也有回复哈,担心没看到,所以这边也回复一下

4个串口都用了,没法修改。只能改板了
Gfan 发表于 2025-9-3 15:45 | 显示全部楼层
davidloon 发表于 2025-9-3 15:21
4个串口都用了,没法修改。只能改板了

好滴好滴,客气,后面有问题也随时来哈
Gfan 发表于 2025-9-3 15:47 | 显示全部楼层
本帖最后由 Gfan 于 2025-9-3 16:22 编辑
davidloon 发表于 2025-9-3 15:20
好的,谢谢!因为看到资料上说明能交换,为方便画板交换了。

不过想问一下,是什么资料说是能够交换的呀?
 楼主| davidloon 发表于 2025-9-3 16:23 | 显示全部楼层
用户手册第288页,SDK包库函数都有说明
/*!
* @brief       Enables the swap Tx/Rx pins
*
* @param       usart:  Select the the USART peripheral.
*                      It can be USART1/USART2/USART3/USART4/USART5/USART6/USART7/USART8.
*
* @retval      None
*
* @NOTE        The USART3/USART4 only for APM32F072 and APM32F091 devices.
*              USART5, USART6, USART7 and USART8 are available only for APM32F091 devices.
*/
void USART_EnableSWAPPin(USART_T* usart)
{
    usart->CTRL2_B.SWAPEN = BIT_SET;
}
Gfan 发表于 2025-9-3 17:13 | 显示全部楼层
davidloon 发表于 2025-9-3 16:23
用户手册第288页,SDK包库函数都有说明
/*!
* @brief       Enables the swap Tx/Rx pins

好咧收到,感谢反馈
GalaxyStroll 发表于 2025-9-4 20:32 | 显示全部楼层
这个坑踩的有点……
看看可不可以分时复用Usart3来实现4个串口,以避免改板
星空魔法师 发表于 2025-9-5 09:24 | 显示全部楼层
我遇到过类似的问题,后来发现是AF映射配置不正确导致的。你可以尝试重新检查你的AF映射设置,确保P10和P11引脚正确映射到了USART4的TX和RX。
FrostShimmer 发表于 2025-9-6 10:28 | 显示全部楼层
学习了。还是避免这么使用吧!
 楼主| davidloon 发表于 2025-9-11 20:09 | 显示全部楼层
星空魔法师 发表于 2025-9-5 09:24
我遇到过类似的问题,后来发现是AF映射配置不正确导致的。你可以尝试重新检查你的AF映射设置,确保P10和P11 ...

映射应该是对的,不交换引脚功能是正常的
 楼主| davidloon 发表于 2025-9-11 20:13 | 显示全部楼层
GalaxyStroll 发表于 2025-9-4 20:32
这个坑踩的有点……
看看可不可以分时复用Usart3来实现4个串口,以避免改板 ...

连续切换也容易出现问题,第一次使用极海MCU。还是要尽量避免使用引脚交换功能
神话编织者 发表于 2025-9-12 17:01 | 显示全部楼层
看来这个锅要程序员来背了啊
梦之一瞥 发表于 2025-9-13 09:38 | 显示全部楼层
学习了,知道这个功能了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

13

帖子

0

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