打印
[STM32F0]

【NUCLEO-64试用】8个串口调试,自定义my_printf函数,支持8串口

[复制链接]
450|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Transformers 于 2020-8-9 15:53 编辑

stm32f091的这个开发板已经收到很长一段时间了,今天我来调试一下他的串口功能。根据数据手册上显示他具有8个串口,是我用过的串口最多的芯片了。之前没有使用过STM32CubeMX这个软件,所以刚开始花了一点时间去熟悉一下,是真的方便。首先新建工程,搜索栏写入STM32F091RC这个芯片的名字然后双击选中。

然后再是配置时钟,这个芯片最大支持48Mhz的时钟,所以我就把他配置成48Mhz,板子上是不带晶振的,所以使用内部的RC震荡。

时钟配置完成之后,然后就是配置串口,先选中USART1,然后选择异步通讯。然后点开参数设置把波特率、数据位、校验位和停止位等基本参数设置一下,其他的都默认。因为要使用到串口的中断,所以还需要开启中断。

串口的3到8是用的同一个中断,所以只要打上3个√就可以了。

将工程名写上,选择MDK,然后再把生成.c.h文件勾选上,最后点右上角的GENERATE CODE,这样初始化就完成了,打开keil工程。
板子自带的串口是USART2,但是根据PCB图和板子的实物图上显示,这个引脚没有被连接起来,所以,我自己外加了一个串口转USB。

首先是将串口2的TX连接到串口1的RX,将串口1的TX连接到串口3的RX,串口3的TX连接到串口4的RX,串口4的TX连接到串口5的RX,串口5的TX连接到串口6的RX,串口6的TX连接到串口7的RX,串口7的TX连接到串口8的RX,将串口8的TX连接到串口转USB的RX。

将线连接完成之后,先配置一个数据接收缓存大小。然后在初始化中写入接收中断使能。所有的串口中断用的是一个接收函数,所以要分别做判断。

最后演示一下效果图。串口2发送的数据能被串口8接收并发送出去。

最后就是自定义printf,使用的阻塞式的发送。找到HAL_UART_Transmit这个函数,他需要输入4个参数,第一个是参数相当于选择哪个串口,第二个是数据缓存区指针,第三个是数据长度,第四个是超时时间。所以我们只要自定义一个函数。

使用的时候只要选择使用哪个串口然后加数据就可以输出了。
我用串口1和串口2做演示,其他的没有测试。

运行程序之后,串口1和串口2输出正常。
最后附上板子的调试图和程序。完整的工程太大无法上传,我只把主要的几个文件上传。




Src.rar

9.44 KB

使用特权

评论回复
沙发
mmuuss586| | 2020-8-24 09:37 | 只看该作者
感谢分享

使用特权

评论回复
板凳
goodluck09876| | 2020-8-24 10:29 | 只看该作者
软件测试使用!

使用特权

评论回复
地板
goodluck09876| | 2020-8-24 10:30 | 只看该作者
看起来挺不错啊!

这个8个串口的话,应该是真不错啊!

使用特权

评论回复
5
goodluck09876| | 2020-8-24 10:30 | 只看该作者
感谢分享!

学习了!

使用特权

评论回复
6
Transformers|  楼主 | 2020-8-24 11:07 | 只看该作者
goodluck09876 发表于 2020-8-24 10:30
感谢分享!

学习了!

使用特权

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

本版积分规则

10

主题

95

帖子

1

粉丝