你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f4的串口4不能接收?

[复制链接]
路过的,谢谢 提问时间:2022-3-7 16:36 / 未解决

使用过两种芯片测试,stm32f405rgt6和stm32f407ve。

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

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

收藏 评论8 发布时间:2022-3-7 16:36

举报

8个回答
废鱼 回答时间:2022-3-7 16:58:47

楼主,您看一下引脚功能配置是否正确。我这里407是可以正常使用的。

GPIO_PinAFConfig(GPIOA, GPIO_PinSource0, GPIO_AF_UART4); GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_UART4);

路过的,谢谢 回答时间:2022-3-7 17:13:32

废鱼 发表于 2022-3-7 16:58
楼主,您看一下引脚功能配置是否正确。我这里407是可以正常使用的。</p>
<p>

[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);

路过的,谢谢 回答时间:2022-3-7 17:14:13

废鱼 发表于 2022-3-7 16:58
楼主,您看一下引脚功能配置是否正确。我这里407是可以正常使用的。</p>
<p>

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

废鱼 回答时间:2022-3-7 17:36:55
从代码上看没问题,建议看一下初始化后的GPIO寄存器实际的值。在线仿真,加断点。可以看寄存器的值。可能是别的地方对接收的GPIO配置后导致出的问题,建议看一下。
路过的,谢谢 回答时间:2022-3-8 09:56:02

废鱼 发表于 2022-3-7 17:36
从代码上看没问题,建议看一下初始化后的GPIO寄存器实际的值。在线仿真,加断点。可以看寄存器的值。可能是 ...

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

废鱼 回答时间:2022-3-8 10:51:02

路过的,谢谢 发表于 2022-3-8 09:56
寄存器值没有问题,比较过串口1(正常)跟串口4的寄存器,除了波特率寄存器的值不一样,串口1跟串口4 ...

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

路过的,谢谢 回答时间:2022-3-11 16:39:36

废鱼 发表于 2022-3-8 10:51
发送正常说明配置是对的,接收不到说明接收的GPIO配置可能不对,检查一下接收的GPIO配置寄存器。设计 ...

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

废鱼 回答时间:2022-3-12 08:38:09

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

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

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版