久芯网

stm32f4的串口4不能接收?

avatar 路过的,谢谢 提问时间: 2023-08-08 12:09:06 / 未解决

使用过两种芯片测试,stm32f405rgt6stm32f407ve

串口4使用PA0跟PA1时,发送正常,接收不到数据,寄存器上可看出无数据,逻辑分析仪上能看出有数据;

串口4使用PC10跟PC11时,收发正常


如需获得 stm32f4 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

8个回答
  • avatar 废鱼
    回答时间: 2023-08-08 12:25:56

    楼主,您看一下引脚功能配置是否正确。我这里407是可以正常使用的。 GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_UART4); GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_UART4);

  • avatar 路过的,谢谢
    回答时间: 2023-08-08 12:51:23
    废鱼 发表于 2022-3-7 16:58
    楼主,您看一下引脚功能配置是否正确。我这里407是可以正常使用的。

    [md]GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE); GPIO_PinAFConfig(GPIOA,GPIO_PinSource0, GPIO_AF_UART4); GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_UART4); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_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_Tx | USART_Mode_Rx; USART_Init(UART4, &USART_InitStructure); USART_DMACmd(UART4,USART_DMAReq_Tx,ENABLE); UART4_TX_DMA_Config();//DMA初始化 if U4_DMA USART_DMACmd(UART4,USART_DMAReq_Rx,ENABLE); UART4_RX_DMA_Config();//DMA初始化 endif USART_Cmd(UART4, ENABLE);

  • avatar 路过的,谢谢
    回答时间: 2023-08-08 13:12:59
    废鱼 发表于 2022-3-7 16:58
    楼主,您看一下引脚功能配置是否正确。我这里407是可以正常使用的。

    [md]麻烦帮我看下,谢谢!

  • avatar 废鱼
    回答时间: 2023-08-08 13:32:45

    从代码上看没问题,建议看一下初始化后的GPIO寄存器实际的值。在线仿真,加断点。可以看寄存器的值。可能是别的地方对接收的GPIO配置后导致出的问题,建议看一下。

  • avatar 路过的,谢谢
    回答时间: 2023-08-08 13:50:42
    废鱼 发表于 2022-3-7 17:36
    从代码上看没问题,建议看一下初始化后的GPIO寄存器实际的值。在线仿真,加断点。可以看寄存器的值。可能是 ...

    寄存器值没有问题,比较过串口1(正常)跟串口4的寄存器,除了波特率寄存器的值不一样,串口1跟串口4的时钟不一样,值不一样是正常的,串口4能发,说明波特率是正确的。另外用一个新的工程文件也测试过一样。还把PA1配置成I/O模式,能正确设置为高低电平

  • avatar 废鱼
    回答时间: 2023-08-08 14:21:39
    路过的,谢谢 发表于 2022-3-8 09:56
    寄存器值没有问题,比较过串口1(正常)跟串口4的寄存器,除了波特率寄存器的值不一样,串口1跟串口4 ...

    [md]发送正常说明配置是对的,接收不到说明接收的GPIO配置可能不对,检查一下接收的GPIO配置寄存器。设计到IO配置,AF的配置。

  • avatar 路过的,谢谢
    回答时间: 2023-08-08 14:38:52
    废鱼 发表于 2022-3-8 10:51
    发送正常说明配置是对的,接收不到说明接收的GPIO配置可能不对,检查一下接收的GPIO配置寄存器。设计 ...

    [md]最终确认是芯片的问题。因为一些原因,后来互换了两批stm32在两种板子上测试,发现新批次的stm32在两种板子上都不能用,旧批次的stm32在两种板子上都能用,另外加过上拉电阻,修改过限流电阻测试过。两个批次的stm32的产地不同。

  • avatar 废鱼
    回答时间: 2023-08-08 15:10:11
    路过的,谢谢 发表于 2022-3-11 16:39
    最终确认是芯片的问题。因为一些原因,后来互换了两批stm32在两种板子上测试,发现新批次的stm32在两 ...

    [md]如果是ST生产的应该不会的。是不是买到假的了。

会员中心 微信客服
客服
回到顶部