OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7143|回复: 14

一直都在说底层驱动,底层驱动,底层驱动的,我就迷糊了,到底哪一块才算底层啊?

[复制链接]

83

主题

217

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2016-4-8
在线时间
116 小时
发表于 2016-6-14 08:15:38 | 显示全部楼层 |阅读模式
1金钱
举个原子哥的程序作为例子。  你说HARDWARE文件夹下的算底层,还是FWLIB下的算底层啊。这个写底层驱动这个概念好迷糊啊。


1.png

最佳答案

查看完整内容[请看2#楼]

都算底层驱动,HARDWARE文件夹里是针对开发板外部器件的底层驱动,FWLIB是ST提供的针对单片机外设的驱动。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
366
金钱
366
注册时间
2012-5-23
在线时间
123 小时
发表于 2016-6-14 08:15:39 | 显示全部楼层
都算底层驱动,HARDWARE文件夹里是针对开发板外部器件的底层驱动,FWLIB是ST提供的针对单片机外设的驱动。
回复

使用道具 举报

5

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
240
金钱
240
注册时间
2016-6-5
在线时间
44 小时
发表于 2016-6-14 08:50:36 | 显示全部楼层
只要是直接让硬件干事情的代码函数都是底层
回复

使用道具 举报

83

主题

217

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2016-4-8
在线时间
116 小时
 楼主| 发表于 2016-6-14 08:58:59 | 显示全部楼层
ztzjl2010 发表于 2016-6-14 08:38
都算底层驱动,HARDWARE文件夹里是针对开发板外部器件的底层驱动,FWLIB是ST提供的针对单片机外设的驱动。

感觉ST单片机的外设底层所写的内容要麻烦很多。 那 文件夹SYSTEM算时什么?
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-6-14 09:02:58 | 显示全部楼层
vention 发表于 2016-6-14 08:58
感觉ST单片机的外设底层所写的内容要麻烦很多。 那 文件夹SYSTEM算时什么?

底层
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-6-14 09:03:57 | 显示全部楼层
所有与芯片驱动相关的都是底层,与硬件打交道的
回复

使用道具 举报

60

主题

409

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2814
金钱
2814
注册时间
2012-10-17
在线时间
653 小时
发表于 2016-6-14 09:12:09 | 显示全部楼层
你直接調用的函式跟外設有關係的就算吧
例如 24C02 你要在.h定義一些硬體與相關的參數
然後寫一些單一的功能 串起來變成 Write Read的函式
前面那些過程就算驅動..
之後調用Read/Write來做事這邊算應用
回复

使用道具 举报

83

主题

217

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2016-4-8
在线时间
116 小时
 楼主| 发表于 2016-6-14 09:17:49 | 显示全部楼层

那简单的操作下IO口,不也可以高大上的说在写底层驱动
回复

使用道具 举报

83

主题

217

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2016-4-8
在线时间
116 小时
 楼主| 发表于 2016-6-14 09:18:38 | 显示全部楼层
civic7366 发表于 2016-6-14 09:12
你直接調用的函式跟外設有關係的就算吧
例如 24C02 你要在.h定義一些硬體與相關的參數
然後寫一些單一的 ...

我想也应该是这样理解的吧
回复

使用道具 举报

2

主题

11

帖子

0

精华

高级会员

Rank: 4

积分
723
金钱
723
注册时间
2016-1-20
在线时间
87 小时
发表于 2016-6-14 11:12:35 | 显示全部楼层
HARDWARE里面是原子做的重新封装,让你更好用外设
回复

使用道具 举报

29

主题

311

帖子

0

精华

高级会员

Rank: 4

积分
747
金钱
747
注册时间
2016-5-21
在线时间
199 小时
发表于 2016-6-14 21:46:00 | 显示全部楼层
所谓的底层是相对的,举个例子,你要用引脚控制LED的灯亮
随便举个例子啊
void pinSetBit(char  Bit)
{}

void turnOnLed()
{
     pinSetBit(1);
}

pinSetBit就是底层驱动,turnOnLed就是上层应用

但是如果你又来一个功能,比如开灯是代表程序出问题了
void showError()
{
    turnOnLed();
}

那么这个时候turnOnLed()就也可算底层驱动,这个层就看你怎么分了。

好的分层能够增加  可阅读性  可移植性  同时以后的代码修改和功能扩展也非常方便。


回复

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2255
金钱
2255
注册时间
2010-12-16
在线时间
205 小时
发表于 2016-6-14 22:07:29 | 显示全部楼层
本帖最后由 shihantu 于 2016-6-14 22:09 编辑

这其实是接口设计问题 , 好的接口可以一眼看出各个层次的关系,但接口设计的好需要大师级的功力 。

可以看看 fatfs 的文档 , 不需要看源代码 , fatfs 的源代码实现了中间层 , 需要用户实现底层 , 就是根据不同的硬件环境有所不同的层次 , 还有根据不同的应用环境 , 用户实现应用层调用 fatfs 的接口 。
建议看看面向对象编程吧 , 按你的基础应该这样容易理解点 。
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复

使用道具 举报

7

主题

72

帖子

0

精华

高级会员

Rank: 4

积分
620
金钱
620
注册时间
2016-10-20
在线时间
74 小时
发表于 2017-3-9 21:25:57 | 显示全部楼层
八度空间 发表于 2016-6-14 09:03
所有与芯片驱动相关的都是底层,与硬件打交道的

底层驱动  可以理解为   单片机的驱动文件 等类。 或者是调用的模块的子函数。。。。。那我感觉一个完整的程序  基本上都是底层了。。
换个说法  ,,底层就是  一个一个的积木。。而整个程序就是  搭好的房子???可以这么理解吗???
回复

使用道具 举报

7

主题

72

帖子

0

精华

高级会员

Rank: 4

积分
620
金钱
620
注册时间
2016-10-20
在线时间
74 小时
发表于 2017-3-9 21:34:31 | 显示全部楼层
haysen 发表于 2016-6-14 21:46
所谓的底层是相对的,举个例子,你要用引脚控制LED的灯亮
随便举个例子啊
void pinSetBit(char  Bit)

按照 你的说法   是不是  可以理解为  程序中 所调用的函数 或者是自己定义的函数就是   底层驱动???
回复

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2017-3-13 17:18:19 | 显示全部楼层
普遍认知,MCU底层驱动就是操作寄存器的代码层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 02:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表