三串口问题 请教

发布: 2010-4-01 21:32 | 作者: 83244656 | 来源: StmFans思蜕盟 OPELC 自由电子联盟

我用了3个USART
usart1和usart2一直都能工作正常
usart3却不能正常工作 只有插上仿真器 它也能一起正常工作
为什么呢
83244656 (2010-4-01 21:46:09)
我usart3是用的PC10和PC11
83244656 (2010-4-01 22:04:33)
要沉了啊
binglin (2010-4-01 23:11:17)
usart3的默认功能就是用PC10和PC11,这没错。

插上仿真器就能工作,这就很有可能是你的USART3的地线没有接好,插上仿真器后就与PC机的地连通了,因此USART3也就正常了,检查一下USART3的第5脚与板子的地有没有虚焊或线路有问题,串口线如果与USART1、2不一样时也要检查,还有USART3的串口座也要检查。
83244656 (2010-4-02 09:36:33)
我是调用了GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE);

会不会是因为映射的问题呢

PB10和PB11还有I2C的功能
我也用了这功能
binglin (2010-4-02 10:13:23)
usart3的默认功能就是用PC10和PC11,你干吗要加上“GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE);”,把这句删掉。
83244656 (2010-4-02 10:32:18)
炳哥哥
你是不是记错了啊
我用的RBT6的
binglin (2010-4-02 10:59:46)
我记错了?我查一下手册。
binglin (2010-4-02 11:01:31)
晕,真是记错了。
83244656 (2010-4-02 11:11:32)
恩啊
现在都不知道怎么办哦
是不是使能了I2C2就不能用USART3了啊
binglin (2010-4-02 11:59:20)
2.4.6
I2C2与SPI2和USART3
配置条件

同时使能了I2C2和SPI2的时钟,或同时使能了I2C2和USART3的时钟。

I/O端口PB12配置为复用输出。
问题描述

在I2C2的SMBALERT信号(即使不用这个功能)和SPI2_NSS在输出模式冲突。

在I2C2的SMBALERT信号(即使不用这个功能)和USART3_CK冲突。

在这些情况下,如果选择了I/O端口为复用输出并且使能了I2C2的时钟,则I/O端口PB12被默认置为’1’。
暂时解决办法
如果SPI2配置为主模式并且NSS是软件模式,则I2C2的SMBALERT信号可以作为输出。
如果SPI2配置为主模式或从模式并且NSS由软件管理,则I2C2的SMBALERT信号可以用于输入模式。
当使用I2C2时,SPI2不能用于其它配置。
当使用I2C2时,一定不能使用USART3的同步模式。

不过奇怪的是你说插上仿真器后就正常这点上。
binglin (2010-4-02 12:03:14)
你看看这几个文档:

1、STM32F10xx8B局限性列表(2009年2月第6版)

2、STM32F10xx46局限性列表(2009年2月第2版)

3、STM32F105107xx局限性列表(2009年6月第1版)

你先试试不用I2C2功能,单独使用USART3时问题还存不存在,如果确实存在那你只能分时使用I2C2及USART3了。
83244656 (2010-4-02 14:03:42)
屏蔽掉I2C
单独用串口也要带仿真器才能正常收发
binglin (2010-4-02 14:07:10)
那就是硬件接线的问题了,请按4楼的方法排查。
83244656 (2010-4-02 14:10:08)
我只用了TX和RX
binglin (2010-4-02 14:12:16)
GND线没接好。
83244656 (2010-4-02 14:28:01)
是地线没接的缘故
现在三串口都好了
谢谢炳哥哥