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

stm32f4如何实现双串口输出,而不发生冲突?

[复制链接]
ataudio 提问时间:2015-1-26 13:53 /
本帖最后由 ataudio 于 2015-1-27 13:17 编辑

我配置了uart2和3,其中uart2和其它芯片的串口进行通信,输出数据,而uart3输出调试信息和log,但是在运行中发现:
1.单独使用任何一个uart进行输出打印,数据都是正常的;
2.在程序中分别输出2路信息,一旦uart分别被调用到,就会冲突导致两uart口都不再输出。停在那里了。。


uart2使用的是UART2_sendData()发送数据;uart3是改写了fputc,重定向printf的输出。

是什么原因导致两个串口输出冲突而停止?有什么办法可以解决多串口分别使用的问题?

补充:
容易出现串口都停止打印的时候,uart2先被调用,然后uart3,即printf后用。将printf和Uart_sendData()先后顺序换一下,两串口能正常输出。代码见下方的楼层。







二十四节气~立秋

二十四节气~立秋
收藏 评论21 发布时间:2015-1-26 13:53

举报

21个回答
cxtarm 回答时间:2015-1-26 18:06:33
相关代码贴出来大家分析分析啊
zfz0122 回答时间:2015-1-26 14:01:46
我的串口的无法识别
hlt512 回答时间:2015-1-26 14:31:12
DMA,你的选择
damiaa 回答时间:2015-1-26 15:03:09
原则上是不能出错的,如果你没搞错。

要不就是你在两个串口通讯中共用了什么东西。具体是什么你知道的。
holts1 回答时间:2015-1-26 16:04:47
用不同的定时间驱动不同的uart
ataudio 回答时间:2015-1-26 17:00:45
damiaa 发表于 2015-1-26 15:03
原则上是不能出错的,如果你没搞错。

要不就是你在两个串口通讯中共用了什么东西。具体是什么你知道的。 ...

我用了不同的管脚配置Uart2和Uart3,fputc对应的是Uart3,而Uart_sendData对应是Uart2。这样的配置还会公用什么呢?
还有一个配置地方就是时钟了,这应该不会冲突吧。

请指点。

二十四节气~白露

二十四节气~白露
ataudio 回答时间:2015-1-26 17:02:22
zfz0122 发表于 2015-1-26 14:01
我的串口的无法识别

不会的吧。按照例程使用,应该能配置成功的。

二十四节气~秋分

二十四节气~秋分
QianFan 回答时间:2015-1-26 17:12:37
肯定是你程序的原因。当时我用429的时候,一次开4个没问题。103试过一次开两个也没问题。不过没有用printf重定向。我是自己重写了Serial.println
damiaa 回答时间:2015-1-26 17:55:52
本帖最后由 damiaa 于 2015-1-26 17:58 编辑

时钟不会。IO如果你确定是不同的IO 那也就不会。但你程序明显有问题,肯定是互相干扰阿,不共用是不会这样的。要不就内存溢出,数组出界。反正就这些问题,不会是UART本身。按理讲库也不会有问题。
123下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版