打印
[STM32F4]

stm32f407IGT6串口问题

[复制链接]
439|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenho|  楼主 | 2021-7-3 09:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近做一个项目,使用407用到多个串口,串口一,二正常,串口三,六波特率不对,找了半天也沒发现问题,哪位大侠遇到过?

使用特权

评论回复
沙发
sadicy| | 2021-7-3 09:47 | 只看该作者
407用的挺多了,应该是程序的事

使用特权

评论回复
板凳
lizye| | 2021-7-3 09:47 | 只看该作者
自己用LL库写的还是 CubeMX生成的?

使用特权

评论回复
地板
chuxh| | 2021-7-3 09:49 | 只看该作者
自己配置的仔细看下时钟的配置吧,你这么表述别人也很难具体分析原因的

使用特权

评论回复
5
chenho|  楼主 | 2021-7-3 09:51 | 只看该作者
串口一六用的同一个时钟,串口二三用的同一个时钟,如果是时钟配置不对,串口一二应该也不正常才对

使用特权

评论回复
6
stly| | 2021-7-3 09:53 | 只看该作者
你要这么说那就是对的 肯定是你看错了

使用特权

评论回复
7
liliang9554| | 2021-7-3 09:55 | 只看该作者
你这种得把实际东西贴出来啊 不然不都是猜吗  对结果毫无意义啊

使用特权

评论回复
8
chenho|  楼主 | 2021-7-3 09:59 | 只看该作者
初始化代码如下:

UARTn_Init(COM1,115200);
UARTn_Init(COM2,115200);
UARTn_Init(COM3,115200);
UARTn_Init(COM6,115200);


void UARTn_Init(COMn_TypeDef COM,uint32_t BaudRate)
{
  GPIO_InitTypeDef GPIO_InitStructure;

        
        USART_InitTypeDef USART_InitStructure;   
      
  
        /* Enable GPIO clock */
  RCC_AHB1PeriphClockCmd(COM_TX_PORT_CLK[COM] | COM_RX_PORT_CLK[COM], ENABLE);

  if (COM == COM1 ||COM == COM6)
  {
    /* Enable UART clock */
    RCC_APB2PeriphClockCmd(COM_USART_CLK[COM], ENABLE);
  }
  else
  {
    /* Enable UART clock */
    RCC_APB1PeriphClockCmd(COM_USART_CLK[COM], ENABLE);
  }
        
        /* USARTx configured as follow:
        - BaudRate = 115200 baud  
        - Word Length = 8 Bits
        - One Stop Bit
        - No parity
        - Hardware flow control disabled (RTS and CTS signals)
        - Receive and transmit enabled
  */
  USART_InitStructure.USART_BaudRate = 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;
        
        /* USART configuration */
  USART_Init(COM_USART[COM], &USART_InitStructure);
  

  /* Connect PXx to USARTx_Tx*/
  GPIO_PinAFConfig(COM_TX_PORT[COM], COM_TX_PIN_SOURCE[COM], COM_TX_AF[COM]);

  /* Connect PXx to USARTx_Rx*/
  GPIO_PinAFConfig(COM_RX_PORT[COM], COM_RX_PIN_SOURCE[COM], COM_RX_AF[COM]);

  /* Configure USART Tx as alternate function  */
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

  GPIO_InitStructure.GPIO_Pin = COM_TX_PIN[COM];
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(COM_TX_PORT[COM], &GPIO_InitStructure);

  /* Configure USART Rx as alternate function  */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStructure.GPIO_Pin = COM_RX_PIN[COM];
  GPIO_Init(COM_RX_PORT[COM], &GPIO_InitStructure);

  
   
        
        Buf_Fifo_Init(COM);        
               
  /* Enable USART */
  USART_Cmd(COM_USART[COM], ENABLE);
        USART_ClearFlag(COM_USART[COM],USART_FLAG_TC);
        USARTn_Int_Init(COM);
}

使用特权

评论回复
9
dingy| | 2021-7-3 10:02 | 只看该作者
串口太多了,没搞过。

使用特权

评论回复
10
supernan| | 2021-7-3 10:04 | 只看该作者

都一样的;
最好程序都贴出来;

使用特权

评论回复
11
chenho|  楼主 | 2021-7-3 10:06 | 只看该作者
代码没问题,犯了一个低级错误,问题解决了,感谢各位关注

使用特权

评论回复
12
xxrs| | 2021-7-3 10:08 | 只看该作者
楼主,讲讲你所谓的低级错误啊,免得我也犯这个错误。

使用特权

评论回复
13
chenho|  楼主 | 2021-7-3 10:10 | 只看该作者
错误太低级。作为一个老司机都不好意思说了。232电平和ttl电平搞错了

使用特权

评论回复
14
chenho|  楼主 | 2021-7-3 10:13 | 只看该作者
嗯,预料中的结果,多谢大家啦

使用特权

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

本版积分规则

748

主题

9853

帖子

5

粉丝