Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
serial_V2
串口
串口 V2 适配指南
发布于 2021-07-26 19:04:34 浏览:8271
订阅该版
[tocm] # 串口V2 适配指南 ## 简介 串口V2版本与串口V1版本很相似,特别是在用户使用体验上,基本感受不到有太大的变化,也是希望用户能够由V1到V2进行平滑过渡。具体的串口V1和V2的改动变化说明,还请详见[串口框架V1和V2版本对比](https://club.rt-thread.org/ask/article/2915.html) 以及 [UART 设备 v2 版本](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/uart/uart_v2/uart?id=uart-设备-v2-版本) 。 目前串口V2版本已经适配了[STM32L475-Pandora的BSP](https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32/stm32l475-atk-pandora),且默认使用的是V2版本;串口V2也适配到了[ART-PI的开发板的serial_lab分支上](https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi/tree/lab_serial),有ART-PI的小伙伴也可切换到该分支尝试使用。 如文章开题,这篇文章主要讲解如何适配串口V2驱动,下面以STM32F411RE-NUCLEO的BSP为例,讲解如何快速适配到该开发板上(本文示图较多,但过程并不复杂)。 ## 下载新版本的RT-Thread源码 从 [gitee](https://gitee.com/rtthread/rt-thread) 或者[github](https://github.com/RT-Thread/rt-thread) 下载。(使用gitee的小伙伴需要注意,使用仓库的分支是 `master` 而不是默认的 `gitee_master`) ![image.png](https://oss-club.rt-thread.org/uploads/20210726/7b7551c40db882408572fe4f3dba09a4.png) 下载到本地后,切换到master分支,找到STM32F411-ST-NUCLEO的目录下:使用env工具打开`menuconfig`的配置界面。 ## 切换串口V2版本 进入到 `RT-Thread Components -> Device Drivers -> ` 下,如下图所示,可以看到关于串口的配置已经发生了变化。 ![image.png](https://oss-club.rt-thread.org/uploads/20210726/543ea973b4c1f970bd8c0c4bc6e99aaf.png) 再进入`USING Serial device drivers ->` 里面可以看到的配置信息如下图所示: ![image.png](https://oss-club.rt-thread.org/uploads/20210726/b6399efe8baeac36b53eb97965184cc6.png) 这里是默认选择使用的串口V1版本,我们切换到V2版本(如有需要,可一并使能上DMA模式)。如下所示: ![image.png](https://oss-club.rt-thread.org/uploads/20210726/2860d5728b16d7e32eacf107465fc0c6.png) ## 修改Kconfig 文件 然后需要修改`board/Kconfig`文件,因为串口V1和V2的宏定义方面的区别有一部分是关于串口缓冲区和DMA的参数配置,这些配置文件就在`board/Kconfig`文件里编写,如下图所示: ![image.png](https://oss-club.rt-thread.org/uploads/20210726/bdb9c7955b3d02396b096fb5b21d6378.png) 下面主要修改的就是红线框内的代码,当然啦,有模板的,可以参照`stm32l4475-pandora`的BSP的Kconfig文件去编写。拿个比较工具对比下看看: ![image.png](https://oss-club.rt-thread.org/uploads/20210726/a1e36ede236558349435d550c6479edf.png) 以左侧的UART1和右侧的串口2为例,左图的串口1配置参数有`BSP_UART1_RX_USING_DMA` 、`BSP_UART1_TX_USING_DMA` 、`BSP_UART1_RX_BUFSIZE` 、`BSP_UART1_TX_BUFSIZE` 这些。 那么好办了,就直接将对应的参数修改下改为右侧的串口2就行了。同理串口6也照抄一份上去,如图所示: ![image.png](https://oss-club.rt-thread.org/uploads/20210726/77fd644bc6fde849307840c8703bd34b.png) **注意:关于FinSH控制台的配置,也就是F411上的串口2,其发送的配置参数一定是buffer为0,即轮询模式,接收的配置参数最好选择中断模式,即不配置DMA接收模式。** ## 尝试编译下载 执行完上述配置就可以直接编译代码了,重新打开`menuconfig`,查看串口2的相关配置:这里选择不使用DMA,并将串口发送设置为轮询模式(轮询模式即TX Buffer为0)。如果是使用串口6的DMA配置,那就在相关的配置界面开启DMA使能即可,这里不再演示。 ![image.png](https://oss-club.rt-thread.org/uploads/20210726/270bf0cb024dbc09f17318bdd4e522d9.png) 然后保存并执行`scons --target=mdk5`,在MDK5上打开并编译,结果报了一个错: ![image.png](https://oss-club.rt-thread.org/uploads/20210726/afb77e6b074fe50a5bcea62cdc676356.png) 这是因为串口驱动里面未对USART3进行配置,却直接使用了该宏定义,简单一点,直接用宏判断处理一下即可(也可先删除掉这部分代码): ![image.png](https://oss-club.rt-thread.org/uploads/20210726/b2a1ac9e2806cb36b652c6c9675851f5.png) 然后再进行编译即 `0 Error(s) , 0 Warning(s)` 。然后再下载即可。 ## 总结 按照上述的过程,即完成了串口V2版本的适配工作,整体来讲主要就是三步: 1. 在`Device Drivers`切换串口V2版本 2. 编写`board/Kconfig`的串口配置文件 3. 编译下载 整体来讲是比较简单的,相信小伙伴花费几分钟就可以适配成功。关于在RT-Thread-Studio 上适配的过程与此类似,就不再赘述了,有任何疑问,可以参照STM32L475-Pandora的BSP作为模板,或者私信本人。 更多文章: [RTT串口V1版本的使用分析及问题排查指南(一)](https://club.rt-thread.org/ask/article/2894.html) [RTT串口V1版本的使用分析及问题排查指南(二)](https://club.rt-thread.org/ask/article/2898.html) [RTT串口V1版本的使用分析及问题排查指南(三)](https://club.rt-thread.org/ask/article/2904.html) [串口框架V1和V2版本对比](https://club.rt-thread.org/ask/article/2915.html) [串口 V2 适配指南](https://club.rt-thread.org/ask/article/2920.html)
12
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
123
这家伙很懒,什么也没写!
文章
6
回答
309
被采纳
68
关注TA
发私信
相关文章
1
串口DMA发送数据时,数据被覆盖
2
关于串口DMA模式下rt_device_close问题
3
利用stm32f427实现usb转串口,电脑端什么也没有识别到
4
finsh 控制台 适配 RS 485请大神指点????
5
uart_sample.c 中,读串口设备时偏移量pos要设置为-1而不是0?
6
【结贴】at_device软件包中对串口接收数据缺少判断导致数据接收异常
7
串口无法接受数据,但可以发送
8
串口如何有效的清除掉接收缓冲,而不必一个一个的去读取
9
串口接收使用方式问题
10
雅特力FINSH问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
SFUD
msh
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1518
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
549
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
3
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部