【ClassA20类库分析】4.GPIO类的使用

  • LiuYang
  • LV5工程师
  • |      2014-11-08 21:05:08
  • 浏览量 4904
  • 回复:3

    从本节起,开始使用ClassA20类库完成操作外设的功能,请先在https://github.com/tjCFeng/ClassA20下载ClassA20类库。


    封装的目的就是简化操作,试想一下,如果想在Linux中直接设置GPIO寄存器需要做什么工作?基本上计算物理地址、获取映射地址、了解每个寄存器的作用、设置对应的位。。。。。。很是繁琐。而使用了封装的类库之后,只需要这样做:

【ClassA20类库分析】4.GPIO类的使用


    只要从原理图上找到了对应的IO口,其他的可以不必考虑,这种开发效率我就不多说了(说的这段时间IO口已经操作完了,呵呵)。


    Fun的作用是选择IO口的功能,打开GPIO.pas文件可以看到定义。每个IO口的功能是不一样的,所以需要按照手册说明指定。不过一般都是Fun0是输入,Fun1是输出,其他的没有规律。

    Pull的作用是是否打开内部的拉电阻。香蕉派的PH24已经有上拉电阻了,所以可以不用设置。如果是自己建立的电路没有拉电阻最好还是设置一下。

    

    单个IO口操作很快,如果我要是想对某一器件输出一个8位、16位等的数据,难道我要创建这许多的对象然后再一个个的操作吗?绝对不行,就算你不怕麻烦,时序上可能也不允许,所以这个时候,TGPIOGROUP这个类就该出现了。


    TGPIOGROUP在创建的时候只指定哪个Port,而不用指定Pin,所以在输出的时候能够一次性赋值给这个Port。例如:

【ClassA20类库分析】4.GPIO类的使用


    

    不要试图在你的设备上执行这段代码,因为这段代码只是举个例子,运行的话可能会造成系统崩溃,请更改为正确的Port后再运行。

    

    既然叫IO,那么有输出就必然有输入。然而由于现在还没有实现内核中断转到用户程序中,所以现在暂时不能响应输入之类的中断,只能采用轮询法,这个强 烈不推荐,还是等中断转发实现后再来考虑吧(不知为何在香蕉派中request_irq总是返回ErrorCode:-22,同一程序在pcDuino上 没有问题。而且驱动的编译还要依据内核的版本,很麻烦,目前还没有找到一个好方法)。

    

    了解这些后,想制作一个控制LED的程序简直易如反掌,比如下面这样的:

【ClassA20类库分析】4.GPIO类的使用


    

    实在太简单了,也很没劲,不要浪费时间,做点实用的东西吧,控制Nokia 5110 的 LCD 显示一些东西。

    先搭建硬件环境,找到空余的引脚,把LCD连接上。比如我是这样连接的:

【ClassA20类库分析】4.GPIO类的使用


【ClassA20类库分析】4.GPIO类的使用


    RST - PI14

    SCE - PI10

    D/C - PI16

    DIN - PH21

    CLK - PH20

    剩下的VCC和GND自己找吧

    

    根据硬件的连接,再来编写软件。为了程序结构的清晰,我创建了一个5110的类,单独一个文件。类的定义是这样的:

【ClassA20类库分析】4.GPIO类的使用



    类中只有public里的函数是可见的,其他的为私有函数和变量。

    从这里下载这个单元文件LCD5110.pas,链接: http://pan.baidu.com/s/1gdxinGB 密码: cnll。如果引脚的定义不一样,请在文件中找到这个部分改为自己的引脚。

【ClassA20类库分析】4.GPIO类的使用


    功能实现了,下面来搭建显示界面。我是这样做的

【ClassA20类库分析】4.GPIO类的使用


    放上了两个按钮和一个Memo输入框。

    选择窗体后在事件里创建Create和Close两个事件,再分别双击两个按钮创建Click事件,输入代码:

【ClassA20类库分析】4.GPIO类的使用


    编写完毕,开始运行。在输入框中随便输入文字,然后点“ShowText按钮”,小屏幕上有显示了:

【ClassA20类库分析】4.GPIO类的使用



    请在这里下载这个单元文件LCD5110.pas,链接: http://pan.baidu.com/s/1gdxinGB 密码: cnll。

    请在https://github.com/tjCFeng/ClassA20下载ClassA20类库。



  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:3
SingleYork 2014-11-11

不错不错,支持一下,多发原创哈……期待更多大作……

0   回复
举报
发布
LiuYang 2014-11-09
谢谢
0   回复
举报
发布
xidianzxc 2014-11-08
好帖~~
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子