RT-Thread 串口应用指南


-
本应用笔记描述了如何使用 RT-Thread 的串口设备,包括串口配置、设备操作接口的应用。并给出了在正点原子 STM32F4 探索 者开发板上验证的代码示例。
设备应用笔记 问题阐述 RT- Thread提供了一套简单的MO设备管理框架,它把O设备分成了三层进行处理:应用层、 ○设备管理层、硬件驱动层。应用稈序通过RT- Thread的设备操作接口获得正确的设备驱动,然后通 过这个改备驱动与底层J○硬件设备进行数据(或控制)交互。 RT-Thread提供给上层应用的是一个抽 象的设各操作接冂,给卜层设备提供的是底层驱动框架。 应用程序 用户实现 设备操作接口 设备管理框架 驱动框架 uart驱动iic驱动spi动gpio驱动 硬件外设:串口、 、网卡 图A.1 RT-Thread设备管理框架 那么用户如何使用设备操作接口开发出跨平台的串口应用代码呢? 问题的解决 本文基于正点原子STM32F4探索者开发板,给出了串口的配置流程和应用代码示例。由于RT Thread设备操作接口的通用性,因此这些代码与硬件平台无关,读者可以育接将它用在自已使用的硬 件平台上。 正点原子STM32F4探索者开发板使用的是STM32F407ZET6,具有多路串口。我们使用串口1 作为she终端,串口2作为实验用串口,测试数据收发。终端软件使用puty。板载串口1带有USB 转串口芯片,因此使用UsB线连接串口1和PC即可;串口2则需要使用USB转串口模块连接到 PC。 设备应用笔记 0 PaF7rTT STM32F4 串口2 ALIEnt EXPLORER wwopenedv.com 串口1 图A.2实验使用的正点原子STM32F4探索者 31准备和配置工程 下载RT-Thread源码htps/github.com/RT-Thread/rt-thread 进入 rt-thread\ sisTm3214 (X-HAL目录,在env命令行中输入 menuconfig,进入配置界血, 使用 menuconfig工具(学习如何使用)配置工程。 配置she使用串凵1:RT- Thread Kernel-> Kernel Device Object-->修改the device name for console为uart1。 勾选 Using UART1、 Using UART2,选择芯片型号为STM32F407zE,时钟源为外部 8MHz,如图所小: CONFIDENTIAL 设备应用笔记 Q 1. Ccnsolez-menuconfig abs Help ·图◆| Search 吗型画 config - RT-Thread Configuration Arrow keys navigate the menu. <Enter> selects submenus --->(or empty submenus ----) Highlighted letters are hockeys. Pressing <I> a工es C> tO exi=, <? for Help, </ for Search. Legend: [= built-in[1 FT-Thread Bermel RT-Thread Components T-Thread online packages Devise type (STM32E207ZE I sing HSI as clock source (800C0C0) HSE Value (168c0C000) Syatem Clock value 1 L811 ng JARTI L』L彐n山A 」LanA CS=cC7 e EXLt 5 Helt save s Load NM13940 10095 图A.3使用 menuconfig配置串口 输入命令 scons- target=mdk5-s生成ke⊥程,打开上程后先侈改MCU型号为 sTM32F407zETX,如图所 W FArt-thread bsp\stm32 4y0x-HAL' roject.uvproix-LMisor FilE Edt view Poject Flash Debug Pcripnerls Tpol: sves window Help 口团园路|和中門阳费距甲作战15A回盛州國|·。回 參增|t::m公晶昌◆令 -- inject: pineri ns for Toroct 'rt thread stm32f4s 日边 Applicatio Cutput Listing【x”,1C|Ax1l“Dls11,x 国 Ht Dr/ers 由自b erice: TM32F407ZET Pack: Keil. S/ t_DFP 211. 由国t34xic Toole: AN LFL:http:nwyke:1-(mlnack 日CMs Search STM32「4_ Drver kErr 日 DeviceDrivers Na si s214v 6 by c of oCM torc cot doc RAM LU modes 由国 doline +.t STV32F4 5 awith qued-atue Incremental ere>der input lerant /]s 庄MM4411 m自 rincbuferc E STM32F412 TiIm rnrr rimhergeneranr 由国 WaI'CUUE.C <. S% STV32F413 n B woikqueuec 日frh 图A.4检查芯片型号 打开pu!y,选择正确的串口,软件参数配置为115200-8-1-N、无流控。如图所小: 设备应用笔记 级 Putty neuralis 曰-Sein Ostiore car rol ing local eei al iree Serial line to connect c Teatures Cur fiqure Lhe seri=l lie Windo 11520 election Fow contrl About CanCel 图A.5 putty配置 编译、下载程序,按下复位后就可以在串口1连接的终端上看到RT- Thread标忐log了,输 入 list device命令能查看到uart1、uart2 Character Device就表示串口配置好了。 CoM9 - PuTTY RT Thread Cperating system 302 build wan 8 201 2006- 2017 Copyright by rt-thread team msh >list device device t ype ref count art2 character device uart Character Device 图A.6使用 ist device命令查看uar设备 CONFIDENTIAL 设备应用笔记 32加入串囗相关代码 Project 区 ts Project: pro 日加rt- thread e:m32f1x A app uart. c 出ran.c C 圖r32f4x_it,c □CMS5 -STM2「4o|| AL Driver 由□ CORIEK-M4 evItEurlyEI finsh 图A.7添加本文提供的文件到工程 木应用笔记附带代码app_uar.c、 app uart. h, app uart.c中是串口相关操作的代码,方使阅读 app uart.c中提供了4个函数 uart open、 uart putchar、 uart putstring、 uart getchar以方便使用串 口。app_ uart. c中的代码与硬件平台无关,读者可以把它直接添加到自己的工程。利用这几个函数在 main. c中编写测试代码 c源码如卜 Include " app uart. h include " board. hI vcid test thread entry (vcidx parameter) rt uint8 t uart rx dat 打开串口*/ f RT EOK) rt kprintf(uart open error.\n") W e rt thread delay(10) 设备应用笔记 /单个字符写 rt putchar(2) t putchar( 8) 写字符串* uart putstring("HellO RT-Thread!\r\n")i /*读数据 uart rx data uart getchar()i 错位 uart rx data uart rx data I /输出* uart putchar(uart rx data)i int main (void) rt thread t tid /创建test线程 tid rt toread create("test test thread ent RT NULT CONFIDENTIAL 设备应用笔记 /创建成功则启动线程 if(七ia!= RT NULL) rt tread startup(tid) return o 这段程序实现」如下功能: main函数里面创建并启动了测试线程 test thread entry. 测试线程调用 uart open函数打开指定的串口后,首先使用 uart_putchar函数发送字符和 uart_putstring函数发送字符串。 接着在 while循环里由调用 uart getchar函数读取接收到的数据并保存到局部变量 uart rx data中,最后将数据错位后输山。 33运行结果 编译、将代码下载到板卡,复位,串口2连接的终端软件ρuty(软件参数配置为11520-8-1-N 无流控)输出了宁符2、0、1、8和字符串 Hello rt- Thread!。输入宁符‘A’,串口2接收到将其错 位后输出。实验现象如图所示 E COM5-PUTTY Hello RT-Thread 图A.8实验现象 图中 sscom连接廾发板的串口2作为测试串口 进阶阅读 串口通常被配置为接收中断和轮询发送模式。在中断模式下,CPU不需要一直查询等待串口相关 标志寄存器,串口接收到数据后触发中断,我们在中断服务稈序进行数据处理,效率较高。 RT-Thread 官方bsp默认便是这种模式 4.1使用哪个串口 uart open函数用于打开指定的串口,它完成了串口设备回调函数没置、串口设备的开启和事件的 初始化。源码如下: 设备应用笔记 rt err t uart open(const char *name rt err t resi /k查找系统中的串口设备木 uart device rt device find(name); /*查找到设备后将其打开 if (uart device ! RT NUT.T, res rt device set rx indicate(uart device, uart intput) /*检登返回值* 二f(res RT EOK) rt kprintf("set s rx indicate error. d\n", name, res)i return -R FRROR /大打开设备,以可读写、中断方式木 res rt device open(uart device, RT DEVICE CFLAG RDWR RT DEVICE FLAG INT RX)i /*检查返回值 二f(res!= RT EOK) rt kprintt("open s device error. od\n", name, res)i return -R ERROR; eI se rt kprintf("can't find %s device.\n", name CONFIDENTIAL

RT-thread操作系统移植到stm32f407后串口发送乱码_course
2014-12-17我使用的是RT-thread 1.2.2版本,代码是从官网百度网盘上下载的.我把源代码打开后找到bsp文件夹,发现里面有stm32f40x的移植工程,于是惊喜万分,没有做任何修改就把工程下载到了我自己的stm32f407 开发板上,led显示的状态正常,可就是串口发回来的数据全是乱码...从网站上看了看好多人的东西,对这个现象好像没有描述,不知各位前辈有没有遇到类似的情况的?还望赐教!
- RT-Thread 笔记(3):RT-Thread 添加一个串口设备 14982020-07-06文章目录一、添加一个串口设备1. 确定IO口2. 编辑 board.h2.1 打开board.h2.2 添加代码2.3 查看串口设备3. 程序设计3.1 官方示例程序3.2 程序的使用4. 测试 一、添加一个串口设备 本文简记了如何新增和使用串口2设备,更多请参考官方文档: https://www.rt-thread.org/document/site/programming-manual/device/uart/uart/#_11 RTT 中外设作为设备存在,在建立工程的时候,一般串口1被作为系统默认
C/C++程序员实战基础
2019-08-2049.98MB
JDK1.8 API 百度翻译版中文 java帮助文档1.8
2016-11-02JDK1.8 API 中文 百度翻译版 java帮助文档 JDK API java 帮助文档 百度翻译 JDK1.8 API 中文 百度翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用
程序员的数学:概率统计
2019-09-19编程的基础是计算机科学,而计算机科学的基础是数学。因此,学习数学有助于巩固编程的基础,写出更健壮的程序。本门课程主要讲解程序员必备的数学知识,借以培养程序员的数学思维。学习者无需精通编程,也无需精通数学。从概率统计、线性代数、微积分、优化理论、随机过程到当前大热的机器学习,讲师幽默风趣,课件精致美观,深入浅出带你重学数学!
Python基础入门
2020-06-05【为什么学Python?】 Python 是当今非常热门的语言之一,2020年的 TIOBE 编程语言排行榜中 ,Python名列第一,并且其流行度依然处在上升势头。 借此机会,裴老师联合CSDN推出了本课程,希望能影响更多的人走进Python,踏入编程的大门。 【你将收获什么?】 · 本课程就是为开发者抓住“新基建”这个历史机遇而设置的。认真地学完了本课程,你就有了一把钥匙,所谓“时势造英雄”,Python语言就是未来成长的垫脚石。 · 从核心基础概念到常见第三方模块,包括数据结构、逻辑运算、常见语句、函数、类及第三方模块,丰富的案例帮助学员快速入门Python。 · “授人以鱼”和“授人以渔”并重是本课程的特色。通过在本课程的学习,学员能够以Python语言为载体,掌握研习高级编程语言的一般方法,为后续个人发展奠定基础。 [知识脉络图]
24.46MB
图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目
2019-01-04图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写
301KB
【京东飞天茅台1499抢购】报错:抢购失败,无法获取生成订单的基本信息,接口返回:【‘addressList’】的解决方案,2021/1/13亲测可用!
2021-01-13【京东飞天茅台1499抢购】 在抢的过程中,抢购链接获取成功,但是在提交订单的时候,获取地址列表失败了。 抢购时报错:抢购失败,无法获取生成订单的基本信息,接口返回:【'addressList'】 此
-
学院
转行做IT-第8章 类与对象、封装、构造方法
转行做IT-第8章 类与对象、封装、构造方法
-
博客
Java容器面试题:谈谈你对 HashMap 的理解
Java容器面试题:谈谈你对 HashMap 的理解
-
下载
CASIO DT900 DT930 DT940 驱动及软件
CASIO DT900 DT930 DT940 驱动及软件
-
博客
3-29Pytorch与autograd梯度与机器学习
3-29Pytorch与autograd梯度与机器学习
-
博客
业务逻辑漏洞--注册-登录-改密码页面总结
业务逻辑漏洞--注册-登录-改密码页面总结
-
下载
kernel-lt-4.4.190.el7.elrepo.x86_64.zip
kernel-lt-4.4.190.el7.elrepo.x86_64.zip
-
下载
一种基于LWT和混沌加密的音频水印算法
一种基于LWT和混沌加密的音频水印算法
-
博客
Ubuntu18.04升级到20.10
Ubuntu18.04升级到20.10
-
下载
偏振多通道遥感云检测的阈值优化
偏振多通道遥感云检测的阈值优化
-
学院
PHP支付宝微信支付配置教程
PHP支付宝微信支付配置教程
-
下载
谱域相位显微成像的相位解包裹
谱域相位显微成像的相位解包裹
-
博客
使用whois命令挖掘域名的信息
使用whois命令挖掘域名的信息
-
博客
AcWing 913. 排队打水 (排序不等式)
AcWing 913. 排队打水 (排序不等式)
-
学院
第1章 Java入门基础及环境搭建【java编程进阶】
第1章 Java入门基础及环境搭建【java编程进阶】
-
博客
Neo4j基础篇(一)
Neo4j基础篇(一)
-
下载
GTA5 v1.44 无限加载故事模式解决方法.zip
GTA5 v1.44 无限加载故事模式解决方法.zip
-
博客
软件工程实训-ATM银行管理系统(附有项目源代码)
软件工程实训-ATM银行管理系统(附有项目源代码)
-
下载
基于时间序列的电力信息系统资源调配研究
基于时间序列的电力信息系统资源调配研究
-
学院
易语言开发通达信DLL公式接口
易语言开发通达信DLL公式接口
-
学院
仿真钢琴-javascript实战
仿真钢琴-javascript实战
-
博客
笔记2. vue中DOM渲染
笔记2. vue中DOM渲染
-
博客
PHPWAMP集成环境Zend组件的相关介绍,环境默认的PHP运行模式
PHPWAMP集成环境Zend组件的相关介绍,环境默认的PHP运行模式
-
博客
这也许是写的最全最透彻最深入的JVM解析了
这也许是写的最全最透彻最深入的JVM解析了
-
下载
struts-2.3.15.2-docs.zip
struts-2.3.15.2-docs.zip
-
下载
Overview of ytterbium based transparent ceramics for diode pumped high energy solid-state lasers
Overview of ytterbium based transparent ceramics for diode pumped high energy solid-state lasers
-
学院
电商设计专业思维
电商设计专业思维
-
博客
二、Anaconda命令conda
二、Anaconda命令conda
-
博客
Git学习分享
Git学习分享
-
下载
2021-1-26 Pool_Lexer_Parser.zip
2021-1-26 Pool_Lexer_Parser.zip
-
下载
一种全数字脉冲信号延迟转发系统
一种全数字脉冲信号延迟转发系统