Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
夏令营
【2024-RSOC】设备驱动框架
发布于 2024-07-28 23:35:12 浏览:182
订阅该版
[tocm] # RT-Thread 设备和驱动 # 一、RT-Thread IO设备模型框架 RT-Thread 提供了一套简单的 I/O 设备模型框架,如下图所示,它位于硬件和应用程序之间,共分成三层,从上到下分别是 I/O 设备管理层、设备驱动框架层、设备驱动层。 ![I/O 设备模型框架](https://www.rt-thread.org/document/site/rt-thread-version/rt-thread-standard/programming-manual/device/figures/io-dev.png) ![image-20240728225818581](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330796.png) 详细介绍请查看:[官方手册](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/device) # 二、框架是如何对接的 ![简单 I/O 设备使用序列图](https://www.rt-thread.org/document/site/rt-thread-version/rt-thread-standard/programming-manual/device/figures/io-call.png) 我们可以看上图,一开始的时候设备驱动会创建设备,并向IO设备管理器进行注册设备。 这一过程是在哪里完成的呢? 可以查看我的这一篇文章:[RT-Thread驱动流程](https://club.rt-thread.org/ask/article/f8f991aaf9f86cce.html) ## 1.Pin 以Pin设备为例子 ![image-20240728231000372](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330797.png) 可以看到他在板极初始化的时候就被自动注册到io设备上。 ![image-20240728231103638](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330798.png) `_stm32_pin_ops`是stm32控制io的一些操作。 ![image-20240728231151890](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330799.png) ![image-20240728231140225](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330800.png) 这些函数都有bsp工程师,帮我们想对应的封装好了。 ![image-20240728231306622](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330801.png) 此时我们去调用`rt_pin_write` ![image-20240728231355457](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330802.png) 就会调用ops中的写函数,实际上就是`_stm32_pin_ops`的写函数。 ![image-20240728231518405](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330803.png) ![image-20240728231536629](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330804.png) ## 2.iic 我们使用menuconfig使能iic总线 可以看到rtconfig.h ![image-20240728232406341](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330806.png) ![image-20240728232419539](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330807.png) ![image-20240728232510743](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330808.png) `rt_i2c_bit_ops`就是把ii2相同的特性提前出来,而不同的特性data来调用 ![image-20240728232741136](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330809.png) ![image-20240728232806811](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330810.png) ![image-20240728232839882](https://cdn.jsdelivr.net/gh/CYFS3/Typroa/202407282330811.png) 可以看到最后的设备层操作函数也是调用设备驱动层的 ps:用文章的形式不好讲清楚,推荐大佬的b站视频: [Hello!RT-Thread](https://www.bilibili.com/video/BV1SU4y197j7?vd_source=8c1bf9924f2718d7b70c1876a083a32e)
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
CYFS
这家伙很懒,什么也没写!
文章
6
回答
2
被采纳
0
关注TA
发私信
相关文章
1
2024RT-Thread操作系统
推荐文章
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
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部