打印
[应用相关]

STM32F0 TX,RX反了,STM32 TX/RX SWAP功能

[复制链接]
2271|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
逢dududu必shu|  楼主 | 2021-8-5 22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天又犯了一次低级错误,STM32F0 TX,RX反了,STM32 TXRXSWAP功能又救了我一次

今天板子回来,串口没反应,知道坏了,估计是TX,RX反了。
但还是记得以前把TX,RX用软件调换过。今天在QQ和人聊,然后也看了库。
stm32f0xx_usart.c中找到下面函数:
/**
  * @brief  Enables or disables the swap Tx/Rx pins.
  * @param  USARTx: where x can be 1 or 2 to select the USART peripheral.
  * @param  NewState: new state of the USARTx TX/RX pins pinout.
  *          This parameter can be:
  *            @ARG ENABLE: The TX and RX pins functions are swapped.
  *            @arg DISABLE: TX/RX pins are used as defined in standard pinout
  * @NOTE   This function has to be called before calling USART_Cmd() function.  
  * @retval None
  */
void USART_SWAPPinCmd(USART_TypeDef* USARTx, FunctionalState NewState)
{
  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_FUNCTIONAL_STATE(NewState));


  if (NewState != DISABLE)
  {
    /* Enable the SWAP feature by setting the SWAP bit in the CR2 register */
    USARTx->CR2 |= USART_CR2_SWAP;
  }
  else
  {
    /* Disable the SWAP feature by clearing the SWAP bit in the CR2 register */
    USARTx->CR2 &= (uint32_t)~((uint32_t)USART_CR2_SWAP);
  }
}

使用特权

评论回复
沙发
逢dududu必shu|  楼主 | 2021-8-5 22:23 | 只看该作者
于是在串口初始化后调用 USART_SWAPPinCmd(COM_USART[COM1], ENABLE);
   NVIC_InitTypeDef NVIC_InitStructure;
   USART_InitTypeDef USART_InitStructure;
   USART_InitStructure.USART_BaudRate = 115200;
   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
   USART_InitStructure.USART_StopBits = USART_StopBits_1;
   USART_InitStructure.USART_Parity = USART_Parity_No;
   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
   STM_COMInit(COM1, &USART_InitStructure);
         
   USART_SWAPPinCmd(COM_USART[COM1], ENABLE);



串口正常了。
喜欢犯错的朋友们不用犯愁了。哈哈。

附:F1好像没这个功能哦。 看控制寄存器 2(USART_CR2)就知道了。

使用特权

评论回复
板凳
kiwis66| | 2021-8-6 09:27 | 只看该作者
恩?第一次知道这个功能~~学习了

使用特权

评论回复
地板
豆杀包| | 2021-8-30 11:55 | 只看该作者
反转TX和RX需要将GPIO的初始化也改变吗

使用特权

评论回复
5
ColeYao| | 2021-8-30 13:57 | 只看该作者
上次stm32F407 串口收发端想起这个功能,然而并没有用!stm32F407不支持,stm32H750倒是支持的,可惜我那块板子上用的单片机是 stm32F407

使用特权

评论回复
6
Betty996| | 2021-8-30 22:01 | 只看该作者
没遇到过这个功能,如果反了,就跳线了 嘿嘿

使用特权

评论回复
7
Charlene沙| | 2021-8-30 22:02 | 只看该作者
知道NXP有个IO矩阵的功能,很强,没想到ST的也有啦?

使用特权

评论回复
8
B1lanche| | 2021-8-30 22:03 | 只看该作者
其实注意一些,就会避免这种低级错误啦。不过真画反了,一般解决方式就是跳线了 先调好再说

使用特权

评论回复
9
yangjiaxu| | 2021-8-30 22:04 | 只看该作者
这个功能挺强的呀,还可以这么玩,第一次听说

使用特权

评论回复
10
Betty1299| | 2021-8-30 22:04 | 只看该作者
如果实在不行,可以做模拟串口,哈哈哈,就是麻烦一些

使用特权

评论回复
11
Candic12e| | 2021-8-30 22:05 | 只看该作者
这个TXRXSWAP是不是有些ST芯片有,有的没有啊?

使用特权

评论回复
12
Alina艾| | 2021-8-30 22:06 | 只看该作者
学习了,这个真是一颗救命稻草,针对那种画反的来说

使用特权

评论回复
13
Belle1257| | 2021-8-30 22:06 | 只看该作者
这个之前就听说过,但是没实际操作过,看楼主这操作好像也不麻烦,以后可以试试

使用特权

评论回复
14
alxd| | 2021-8-30 22:07 | 只看该作者
能救回来就是好同志,这个功能真的很  及时雨

使用特权

评论回复
15
Allison8859| | 2021-8-30 22:08 | 只看该作者
你这是初始化 USART么?

使用特权

评论回复
16
Carina卡| | 2021-8-30 22:09 | 只看该作者
我要是遇到这问题,可能就跳线了,知道这帖子之后 才有改代码的想法 哈哈哈

使用特权

评论回复
17
Annie556| | 2021-8-30 22:09 | 只看该作者
挺不错,这功能很有用,以后可以尝试着搞搞

使用特权

评论回复
18
Estelle1999| | 2021-8-30 22:10 | 只看该作者
除了串口,其他特殊IO有没有这种类似于随便配置的IO矩阵功能呀?

使用特权

评论回复
19
Charlotte夏| | 2021-8-30 22:10 | 只看该作者
这功能很强大,不过我希望我不会用得到,哈哈哈哈

使用特权

评论回复
20
Emily999| | 2021-8-30 22:11 | 只看该作者
建议画板子的时候,串口一定要标注清楚,不然画反是常态,可麻烦了

使用特权

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

本版积分规则

61

主题

451

帖子

0

粉丝