查看: 36|回复: 0

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

[复制链接]

主题

好友

6600

积分

版主

  • TA的每日心情
    奋斗
    2019-1-10 09:25
  • 签到天数: 1360 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2014-11-7 09:16:36 |显示全部楼层
    经过前两节的铺垫,在语法上估计没有问题了吧,现在正式进入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类库。
    回复

    使用道具 举报

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

    关闭

    站长推荐上一条 /4 下一条

    手机版|电路城

    GMT+8, 2019-7-19 21:25 , Processed in 0.100120 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部