RT-Thread IO设备模型

IO设备模型

RTT提供了一套简单的I/O设备模型框架,它位于硬件和应用程序之间,共分成三层,从上到下分别是I/O设备管理层、设备驱动框架层、设备驱动层。

在这里插入图片描述

  • 应用程序通过I/O设备管理接口获得正确的设备驱动,然后通过这个设备驱动与底层I/O硬件设备进行交互。
  • I/O设备管理层实现了对设备驱动程序的封装。
  • 设备驱动框架是对同类硬件设备驱动的抽象,将不同厂家的同类硬件设备驱动中相同的部分抽取出来,将不同部分留出接口,由驱动程序实现。
  • 设备驱动层是一组驱使硬件设备工作的程序,实现访问硬件设备的功能。

简单设备的注册不经过设备驱动框架层,直接将设备注册到I/O设备管理器中。

  • 设备驱动根据设备模型定义,创建出具备硬件访问能力的设备实例,将该设备通过rt_device_register()接口注册到I/O设备管理器中。
  • 应用程序通过rt_device_find()接口查找到设备,然后使用I/O设备管理接口来访问硬件。

在这里插入图片描述
对于一些复杂设备,需要使用到对应的设备驱动层框架,进行注册,如:看门狗定时器。

  • 看门狗设备驱动程序根据看门狗设备模型定义,创建出具备硬件访问能力的看门狗设备实例,并将该看门狗通过rt_hw_watchdog_register()接口注册到看门狗设备驱动框架中。
  • 看门狗设备驱动框架通过rt_device_register()接口将看门狗设备注册到I/O设备管理器中。
  • 应用程序通过I/O设备管理接口来访问看门狗硬件设备。

在这里插入图片描述

I/O设备类型

在这里插入图片描述

创建和注册IO设备

驱动层负责创建设备实例,并注册到I/O设备管理器中。
rt_device_t rt_device_create(int type, int attach_size);

设备被创建后,需要实现它访问硬件的操作方法
在这里插入图片描述
设备被创建后,需要注册到I/O设备管理器中,应用程序才能够访问。
在这里插入图片描述
在这里插入图片描述
设备注销后,将从I/O设备管理器中移除,也就不能再通过设备查找搜索到该设备。注销设备不会释放设备控制器占用的内存。
unregister

访问IO设备

应用程序通过I/O设备管理接口来访问硬件设备,当设备驱动实现后,应用程序就可以访问该硬件。
在这里插入图片描述
数据收发回调,当硬件设备收到数据时,可以通过函数回调另一个函数来设置数据接收指示,通知上层应用线程有数据到达。

UART串口设备

常用接口函数:
在这里插入图片描述
查找串口设备“uart2”
打开串口设备(串口收发数据模式:中断、轮询、DMA)
控制串口设备
发送数据:rt_device_write()

用中断接收数据

在这里插入图片描述
应用层

  1. 初始化信号量(信号量使数据接收同步,标志是否有数据
  2. 设置接收回调函数(被执行时,设置信号量,唤醒了数据处理线程)。
  3. 创建数据处理线程
  4. 数据处理线程阻塞等待信号量

用户输入一个字符

  1. 串口外设接收到字符串并触发串口接收中断。
  2. ISR将数据放入缓冲区,并在接受回调函数中发送信号量激活数据处理线程。
  3. 数据处理线程获取到信号量被激活,并从缓冲区读取一个字符串。

DMA接收和轮询发送

在这里插入图片描述

ADC设备

ADC(Analog-to-Digital Converter)指模数转换器。是指将连续变化的模拟信号转换为离散的数字信号的器件。

相关参数说明:

  • 分辨率:以二进制(或十进制)数的位数来表示,一般有8位、10位、…16位等,它说明模数转换器对输入信号的分辨能力,位数越多,表示分辨率越高,恢复模拟信号时会更精确。
  • 精度:精度表示ADC器件在所有的数值点上对应的模拟值和真实值之间的最大误差值,也就是输出数值偏离线性最大的距离。
  • 转换速率:A/D转换器完成一次从模拟到数字的AD转换所需时间的倒数。例如,某A/D转换器的转换速率为1MHz,则表示完成一次AD转换时间为1us。

ADC设备使用

应用程序通过RTT提供的ADC管理接口来访问ADC硬件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

I2C总线

I2C(Inter Integrated Circuit)总线是PHILIPS公司开发的一种半双工、双向二线同步串行总线。

I2C总线传输数据时需要两根信号线:

  • 双向数据线SDA
  • 双向时钟线SCL

在这里插入图片描述

SDA、SCL默认情况都是高电平(上拉电阻拉高)。

时序:
在这里插入图片描述
在时钟线高电平期间读取数据,低电平期间准备数据。

协议:
在这里插入图片描述
在这里插入图片描述

访问I2C总线设备

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1618152.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

cyclictest stress 工具 使用

工具介绍 1. Cyclictest 准确且重复地测量线程的预期唤醒时间与它实际唤醒的时间之间的差异,以提供有关系统延迟的统计数据。 它可以测量由硬件、固件和操作系统引起的实时系统延迟 2.stress是Linux的一个压力测试工具,可以对CPU、Memory、IO、磁盘进行…

反转链表00

题目链接 反转链表 题目描述 注意点 链表中节点的数目范围是 [0, 5000] 解答思路 迭代或递归解决本题 代码 方法一: // 迭代 class Solution {public ListNode reverseList(ListNode head) {if (head null || head.next null) {return head;}ListNode pre…

Unity导出Android制作桌面宠物精灵需要背景透明

项目场景: Unity制作小精灵导出后,嵌入Android页面中。要求整个APP页面只有一个Android页面背景,因此Unity需要背景透明。最后要求整个APP代码以SDK和API的方式提供给第三方APP使用。 解决历程: 1. 直接修改主相机纯色背景透明…

C++桌面小精灵:实现像Office助手一样的帮助精灵

桌面助手小精灵是一款高性能系统辅助软件,它运行速度快,消耗内存不超过2M,界面美观,结构简洁,可像QQ,MSN等软件一样便捷收放,功能实用,能够为日常的电脑使用带来很大的便捷。 VC实现…

vnc远程桌面精灵,细数三款可能你没有使用过的vnc远程桌面精灵

看到vnc远程桌面精灵就可以知道这是一款什么软件,远程控制软件讲究的是方便好操作,因为远程控制这个功能就是比较麻烦的。细数三款可能你没有使用过的vnc远程桌面精灵。 第一款:IIS7服务器管理工具 这个工具里面的VNC功能可以说是使用感非常…

基于C#制作一个桌面宠物

此文主要基于C#制作一个桌面宠物,可自定义宠物素材图片及打开外部exe的快捷菜单。 实现流程1.1、创建项目1.2、准备素材1.3、控件设置(1)PictureBox控件(2)timer控件(3)contextMenuStrip控件1.4、生成为exe程序1.5、设置开机自启代码块实现流程 1.1、创建项目 打开Visu…

VSCode配置触动精灵开发环境

VSCode配置触动精灵开发环境 文章目录 VSCode配置触动精灵开发环境一、安装VSCode二、搭建开发环境1.安装插件2.Lua编译器(可以不安装)3.触动精灵插件使用 一、安装VSCode 首先下载 VsCode: https://code.visualstudio.com/ 二、搭建开发环境 1.安装插件 (1) Lua ---- Lua语…

JAVA桌面精灵演示版

近来闲的慌,看见C#或C写的桌面精灵是不是心理痒痒,JAVA能写不?在我这里回答是:能 当然程序还有点bug,背景处理有问题,这个和系统的刷新率有关....以后再研究... 没啥特别的功能,就是隐藏精灵和现实精灵,完全是gui设…

c语言桌面窗口移动,c语言移动Windows桌面图标

移动windows桌面图标实现简单动画 这个操作需要关闭 桌面图标的自动排列 image.png #include #include #include #include #include #define N 200 typedef struct node { int x; // 横坐标 int y; // 纵坐标 int fx; // x 运动方向 int fy; // y 运动方向 }Node; int main() {…

mmd导入的桌面精灵:unity(转载)

之前想做一个桌面精灵,就上网查了一下。发现各位前辈真强大。我就搬运搬运: 首先我先在网上找到了一下模型和舞蹈动作数据,mmd的。 网站是:mmd模型和动作数据 然后我们再去下载一个mmd转换成fbx的unity插件: MMD4Mecan…

制作桌面精灵(动态桌面)——鼠标跟随的粒子效果

这里使用了nowpaper的一个例子: Silverlight C# 游戏开发:绚丽的粒子特效-颜色粒子(一) 我新建了一个WPF 3.5项目,将里面的代码添加了几个方法,就可以在桌面上使用这个效果。 主要原理是用了一个鼠标的钩子…

vnc远程桌面精灵,七款让人爱不释手的vnc远程桌面精灵

看到vnc远程桌面精灵就可以知道这是一款什么软件,远程控制软件讲究的是方便好操作,因为远程控制这个功能就是比较麻烦的。推荐七款让人爱不释手的vnc远程桌面精灵。 第一款:IIS7服务器管理工具 这个工具里面的VNC功能可以说是使用感非常棒的。它可以一键导出或导入,还可以…

JAVA8 Swing 简单的桌面精灵(踩坑点记录)

1. 前言 萌新上班摸鱼的时候玩了玩Swing,想着弄个桌面精灵玩玩,结果一百度发现过气Swing,根本没多少教程,只能东找找,西凑凑,终于拼出了想要的效果。给张效果图: 本质上就是个隐藏了边框的窗口…

vs+qt实现简单桌面精灵

开篇先放成果(桌面精灵用的图片皆为网上的图片,后准备自己做一下) 可以实现获取在桌面的位置,产生相应的变化,比如用鼠标将他拖到电脑屏幕边缘,会吸附到电脑边缘(其实就是换了一张图片&#xf…

windows/linux桌面精灵(带源码)

效果图: 代码实现逻辑: 桌面上展示的动画均为gif无背景动图(可以下载一套指定模型的gif图),通过监听键盘的输入或者鼠标的点击拖拽,来实现动画的切换,在切换时,通过播放控制器来实现…

PyQt5桌面应用开发(11):摸鱼也要讲基本法之桌面精灵

本文目录 PyQt5桌面应用系列鼠标不要钱,手腕还不要钱吗?PyQt5源程序python文件资源定义界面定义文件 技术要素资源文件StyleSheetsQMainWindow设置窗体几何 结论 PyQt5桌面应用系列 PyQt5桌面应用开发(1):需求分析 PyQ…

桌面精灵制作记录

前言 2014年时,想做一个会跳舞的,当在敲代码的时候驱动跳舞激励程序员、可以聊天的、可以语音聊 的桌面精灵 上个最后效果图 没gif 接入聊天AI 市面上的人工智能回答很多产品。比较流行的好用的有: 1.微软小娜和微软小冰,似乎…

Lottery抽奖项目学习第二章第一节:环境、配置、规范

Lottery抽奖项目学习第二章第一节:环境、配置、规范 环境、配置、规范 下面以DDD架构和设计模式落地实战的方式,进行讲解和实现分布式抽奖系统的代码开发,那么这里会涉及到很多DDD的设计思路和设计模式应用,以及互联网大厂开发中…

SMC_Interpolator2Dir反向插补运动

附加函数是: SMC_Interpolator2Dir_SlowTask 函数的位置: 输入: 运行 bExecute 【BOOL】 路径包 poqDataIn 指向SMC_OUTQUEUE的指针 停止 bSlow_Stop 停止BOOL 急停 bEmergency_Stop 紧急停止BOOL 单…

70K的QQ——MiniQQ

采用标准腾讯UDP协议,显示IP、显示上次登录时间/IP、初步支持群、好友分组,最酷的是软件本身只有70K!速度、稳定性、易用性都还不错,目前版本为[V2.0B] ,另外还有一款[V1.6]是基于WAP协议的,可以在GPRS笔记…