【ClassA20类库分析】3.ClassA20功能及结构

作者: tjcfeng
上传时间为: 2014-11-07 02:36 PM

    经过前两节的铺垫,在语法上估计没有问题了吧,现在正式进入ClassA20类库的环节。

    首先先下载文件:https://github.com/tjCFeng/ClassA20,推荐直接下载zip文件。解压...

    A20.pas - 整个类库的基础,为计算映射地址的单元,不需要直接使用

    Clock.pas - 打开关闭部分外设的时钟控制,不需要直接使用

    GP.pas - 备份寄存器控制单元

    GPIO.pas - GPIO控制单元

    LRADC.pas - LRADC低精度ADC控制单元

    PWM.pas - PWM控制单元

    RTC.pas - 实时时钟控制单元

    TWI.pas - I2C控制单元

    Timer.pas - 计时器控制单元

    目前实现了这几个,后续准备实现SPI、中断等。由于Linux中断不能直接被用户态程序响应,所以有些麻烦,这一点真不如WinCE好用。

    

    工程建立:

    参考第一节工程的建立,保存所有文件后,将ClassA20文件夹放在工程文件夹里(便于管理)。在IDE中选择“工程”菜单中的“工程选项”,会弹出工程配置的窗体。

    

   在这个弹出的窗体中会看到好多的选项。选择“路径”后,在右边的“补充单元”可以直接输入需要引用的文件夹名称,或者点击后面的按钮,在之后的弹出窗体中选择文件夹。

    

    选择好之后,就可以在单元中引用需要的单元文件了。

    

    小技巧:如果想打开某一个单元文件,或想查看某一函数、定义等,只要把鼠标移到上面,按住Ctrl键,鼠标就会变成手形,然后点击鼠标,可以直接打开文件并跳转到对应的位置,非常方便。如果鼠标点击后没有打开或跳转,证明没有找到该文件或书写错误。

    另外,当创建一个对象后,在对象名后面输入“.”,就会弹出该对象所能调用的方法或属性,而该对象类中的私有成员则不显示,这样可以大大提高代码编写的效率。

    

    程序结构:

    ClassA20类库每一个单元中一般分为两部分,单例类和普通类。以LRADC.pas为例,

    

    单例类一般用于对临界资源或统一控制资源的封装,并且没有功能的简化,可以直接操作对应的寄存器;而普通类则是对某一通道或某一端口进行的封装,常用的设置和功能被封装,可以直接调用简化操作。

    例如全志的A20,两个通道的LRADC的启动和停止采集由同一组寄存器控制,所以它们被封装到了单例类中,避免对一个通道的控制时无意中影响到另一个通道的工作;而对具体某一通道进行读取数据的操作,由于可以分别操作,所以被封装到了普通类中。

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

    

全部评论 ()

创建讨论帖子

登录 后参与评论
系统提示