- 1、本文档共79页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.注释 在程序代码中使用注释,有助于对程序的阅读理解,说明程序在“做什么”,解释代码的目的、功能和采用的方法。 (1)一般情况源程序有效注释量在30%左右。 (2)注释语言必须准确、易懂、简洁。 (3)编写和修改代码的同时,处理好相应的注释。 (4)C语言中采用“//”注释,不使用段注释“ /* */ ”。段注释用于调试,便于注释不用的代码。 为规范嵌入式底层驱动构件的注释,特别对文件头注释、函数头注释、行注释与边注释进行特别说明。 1)文件头注释 底层驱动构件的接口头文件和实现源文件的开始位置,使用文件头注释,如: 2)函数头注释 在驱动函数的接口声明和函数实现前,使用函数头注释详细说明驱动函数提供的服务。在构件的头文件中必须添加完整的函数头注释,为构件使用者提供充分的使用信息。构件的源文件对用户是透明的,因此,在必要时可适当简化函数头注释的内容。例如: 3)整行注释与边注释 整行注释文字,主要是对至下一个整行注释之前的代码进行功能概括与说明。边注释位于一行程序的尾端,对本语句或至下一边注释之间的语句进行功能概括与说明。 5.4.3 公共要素文件 同一芯片中不同的构件存在公共使用的内容,将这些内容以构件的形式组织起来,成为构件公共要素。 所有底层驱动构件都包含对构件公共要素的引用。 构件公共要素文件放在工程文件夹的“\Common”文件夹下,分别名为common.h和common.c。 1.芯片寄存器映射文件 在common.h文件中包含了描述芯片寄存器映射的头文件,当底层驱动构件引用common.h文件时,即可使用片内寄存器映射文件中定义访问各自相关的特殊功能寄存器。 除包含芯片片内寄存器映像文件,还需要将与芯片内核相关的内容引用到公共要素中,如开关总中断。但C语言的编译器无法为具体的芯片生成开关总中断的语句。一般使用宏语句映射内嵌汇编的方式定义宏开关中断的语句: 2.位操作宏函数 将编程时经常用到的寄存器位操,即对寄存器的置位、清位及获得寄存器某一位状态的操作,定义成宏函数。综合利用“”、“”、“|”、“”、“~”等位运算符,可以实现置位与清位,且不影响其他位的功能。 为了方便使用,把这种方法改为带参数的“宏函数”,并且简明定义,放在公共头文件(common.h)中。使用该“宏”的文件,可以包含“common.h”文件。 这样就可以使用BSET、BCLR、BGET这些容易理解与记忆的标识,进行寄存器的置位、清位及获得寄存器某一位状态的操作。 3.重定义基本数据类型 在编写嵌入式程序时使用的基本数据类型多以8位、16位、32位数据长度为单位,且要明确使用变量的字长。但不同的编译器为基本整型数据类型分配的位数存在不同,因此,需根据具体编译器重新定义嵌入式基本数据类型。重新定义后,不仅书写方便,也有利于软件的移植。例如: 通常有一些数据类型不能进行优化处理。 不优化数据类型的修饰关键字是volatile。它用于通知编译器,对其后面所定义的变量不能随意进行优化,因此,编译器会安排该变量使用系统存储区的具体地址单元,编译后的程序每次需要存储或读取该变量时,都会直接访问该变量的地址。 若没有volatile关键字,则编译器可能会暂时使用CPU寄存器来存储,以优化存储和读取,这样,CPU寄存器和变量地址的内容很可能会出现不一致现象。 常用的volatile变量使用场合有:设备的硬件寄存器、中断服务例程中访问到的非自动变量、操作系统环境下多线程应用中被几个任务共享的变量。 4.临界区访问函数 在主程序的运行过程中,开放中断可响应外部事件,但当中断到来之时,主程序的运行将被打断转而执行中断服务程序。有些情况下,一些程序段是需要连续执行而不能被打断的,此时,程序对CPU资源的使用是独占的,这种状态称为“临界状态”,不能被打断的过程称为对“临界区”的访问。 为防止在执行关键操作时被外部事件打断,一般通过关中断的方式使程序访问临界区,屏蔽外部事件的影响。执行完关键操作后退出临界区,打开中断恢复对中断的响应能力。 但直接执行开关中断管理对临界区的访问隐藏着安全隐患,因为无论系统的中断开关状态如何,执行了一次临界访问之后,系统的中断一定会被开放,
文档评论(0)