请教,关于APM32F072 USART4引脚交换问题
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是可以发出信号的。想请教这个问题怎么解决 hi,我们在开发者论坛上也有回复哈,担心没看到,所以这边也回复一下
我们测试过,确实是这样,有可能是板子上TX/RX画反了,有如下建议哈:
[*]如果选用USART4,不要用交叉模式(交叉无效);
[*]使用USART1/ 2/ 3, (建议复用USART3),再使用交叉模式
[*]
https://community.geehy.cn/d/1161-apm32f072-yong-usart4ying-she-dao-pc10pc11zai-she-zhi-yin-jiao-jiao-huan-txfa-bu-chu-xin-hao/3
Gfan 发表于 2025-9-3 14:30
hi,我们在开发者论坛上也有回复哈,担心没看到,所以这边也回复一下
好的,谢谢!因为看到资料上说明能交换,为方便画板交换了。 Gfan 发表于 2025-9-3 14:30
hi,我们在开发者论坛上也有回复哈,担心没看到,所以这边也回复一下
4个串口都用了,没法修改。只能改板了 davidloon 发表于 2025-9-3 15:21
4个串口都用了,没法修改。只能改板了
好滴好滴,客气,后面有问题也随时来哈 本帖最后由 Gfan 于 2025-9-3 16:22 编辑
davidloon 发表于 2025-9-3 15:20
好的,谢谢!因为看到资料上说明能交换,为方便画板交换了。
不过想问一下,是什么资料说是能够交换的呀? 用户手册第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;
}
davidloon 发表于 2025-9-3 16:23
用户手册第288页,SDK包库函数都有说明
/*!
* @brief Enables the swap Tx/Rx pins
好咧收到,感谢反馈 这个坑踩的有点……
看看可不可以分时复用Usart3来实现4个串口,以避免改板 我遇到过类似的问题,后来发现是AF映射配置不正确导致的。你可以尝试重新检查你的AF映射设置,确保P10和P11引脚正确映射到了USART4的TX和RX。
学习了。还是避免这么使用吧! 星空魔法师 发表于 2025-9-5 09:24
我遇到过类似的问题,后来发现是AF映射配置不正确导致的。你可以尝试重新检查你的AF映射设置,确保P10和P11 ...
映射应该是对的,不交换引脚功能是正常的 GalaxyStroll 发表于 2025-9-4 20:32
这个坑踩的有点……
看看可不可以分时复用Usart3来实现4个串口,以避免改板 ...
连续切换也容易出现问题,第一次使用极海MCU。还是要尽量避免使用引脚交换功能 看来这个锅要程序员来背了啊 学习了,知道这个功能了。
页:
[1]