新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)C語(yǔ)言編程格式

基于單片機(jī)C語(yǔ)言編程格式

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò) 收藏
1. 凡是注解均用如下長(zhǎng)度的字符數(shù),此數(shù)是正常情況下在keil中A4紙的打印長(zhǎng)度(105個(gè)字符),在word中設(shè)置左右邊距為1.0cm。

//

本文引用地址:http://butianyuan.cn/article/201611/318718.htm

2. 文件頭的格式:

/*
* Company Name
* Address
*
* (c) Copyright 20xx, Company Name, City, State
* All Rights Reserved
*
*
* FileName :
* Version :
* Programmer(s) :
* Description :
*
*
*/

3. 函數(shù)頭的格式:

/*
* FunctionName :
* Description :
* EntryParameter :
* ReturnValue :
*/

4. 文件結(jié)束格式:

/*
* End Of File
*/

5. 文件管理:

對(duì)于文件的管理來(lái)說(shuō),應(yīng)把每一個(gè)程序模塊分成兩份。一個(gè)是C語(yǔ)言源代碼,一個(gè)對(duì)應(yīng)的頭文件,且放在一個(gè)文件夾中。
例如,關(guān)于LCD1602的驅(qū)動(dòng)模塊,應(yīng)該分為L(zhǎng)CD1602.C和LCD1602.H,并放在LCD1602文件夾中。LCD1602.C中包含的是驅(qū)動(dòng)程序
的源代碼,盡量做到與移植無(wú)關(guān);LCD1602.H中應(yīng)該包含函數(shù)的申明部分、宏定義、全局變量的申明接管腳定義等,也就是
與移植相關(guān)的部分。
對(duì)于main.c函數(shù)應(yīng)該對(duì)于config.h頭文件。main.c中為應(yīng)用程序的主程序部分,負(fù)責(zé)把各個(gè)模塊聯(lián)系起來(lái);而config.h頭
文件為整個(gè)系統(tǒng)的配置文件,里邊除了編寫(xiě)不依賴(lài)于編譯器的數(shù)據(jù)類(lèi)型的定義外,還應(yīng)該把整個(gè)工程需要的所有程序模塊均包含進(jìn)來(lái),這樣每一個(gè)程序
模塊中都只需要包含config.h頭文件即可。

6. 命名規(guī)則:

A. 函數(shù)命名:
函數(shù)名均由大寫(xiě)字母開(kāi)頭,單詞之間也應(yīng)用大寫(xiě)區(qū)別,為了移植以后程序模塊的函數(shù)名不重復(fù),應(yīng)在程序模塊的每一個(gè)函數(shù)名中加上模塊名。如: LCDWriteData(),LCD表示液晶模塊,WriteData寫(xiě)數(shù)據(jù)到液晶模塊中。至于下劃線(xiàn)的帶與否,可以用與區(qū)分是函數(shù)的內(nèi)部函數(shù)與否,也就是說(shuō),如果帶下劃線(xiàn),表示為模塊內(nèi)部函數(shù),應(yīng)用程序可能不需要調(diào)用,模塊內(nèi)部調(diào)用;不帶下劃線(xiàn)表示為應(yīng)用程序需要調(diào)用的函數(shù)。
B. 變量命名:
全局變量 -- 大寫(xiě)字母開(kāi)頭,并且加上文件名為變量前綴。
局部變量 -- 小寫(xiě)字母開(kāi)頭,
內(nèi)部變量 -- 用簡(jiǎn)單字母表示,如:循環(huán)用i,j,k等;指針 - p,字符 - c,字符串 - s。

總結(jié):形式參數(shù) -- 在函數(shù)中應(yīng)也小寫(xiě)開(kāi)頭;
自動(dòng)變量 -- 小寫(xiě)字母;
靜態(tài)變量 -- 大寫(xiě)開(kāi)頭;
外部變量 -- 文件名開(kāi)頭;
函數(shù)命名 -- 文件名開(kāi)頭。

7. 注解規(guī)則:

對(duì)于函數(shù)的注解均該應(yīng)“//”來(lái)表示,而不是“//”。因?yàn)榍罢弑硎竞?,如果想把整段代碼注釋掉只要加上后者,但如果一開(kāi)始就用了后者,再想注釋掉整段代碼就比較麻煩了。注解應(yīng)該對(duì)齊,如果一行寫(xiě)不下,可以寫(xiě)在代碼的前面一行,也可以在后面一行繼續(xù)編寫(xiě)。

8. 代碼編寫(xiě)格式:

對(duì)于代碼的編寫(xiě)格式,將嚴(yán)格按照《c語(yǔ)言編程規(guī)范》來(lái)編寫(xiě)。

9. 宏的定義:

常數(shù)和宏定義要用全大寫(xiě)表示,單詞之間可以用下劃線(xiàn)分割開(kāi)。十六進(jìn)制要用“0x”開(kāi)頭,其后的字母一定要用大寫(xiě)表示。如果是定義的是常量不需要加括號(hào),但是表示的是一個(gè)或更多的語(yǔ)句時(shí)應(yīng)該加上括號(hào),而要替代的表達(dá)式均應(yīng)加括號(hào)。如:

#define KEY_FF (0x0F) // 常量定義,常量后不加括號(hào),表達(dá)式加括號(hào)
#define KEY_BUF_FULL() (KeyNRd > 0) // 語(yǔ)句應(yīng)加括號(hào)

10. 數(shù)據(jù)類(lèi)型:

typedef unsigned char Boolean; // Boolean 位變量
typedef unsigned char uint8; // defined for unsigned 8-bits integer variable 無(wú)符號(hào)8位整型變量
typedef signed char int8; // defined for signed 8-bits integer variable 有符號(hào)8位整型變量
typedef unsigned short uint16; // defined for unsigned 16-bits integer variable 無(wú)符號(hào)16位整型變量
typedef signed short int16; // defined for signed 16-bits integer variable 有符號(hào)16位整型變量
typedef unsigned int uint32; // defined for unsigned 32-bits integer variable 無(wú)符號(hào)32位整型變量
typedef signed int int32; // defined for signed 32-bits integer variable 有符號(hào)32位整型變量
typedef float fp32; // single precision floating point variable (32bits) 單精度浮點(diǎn)數(shù)(32位長(zhǎng)度)
typedef double fp64; // double precision floating point variable (64bits) 雙精度浮點(diǎn)數(shù)(64位長(zhǎng)度)

11. 局部變量:

一些程序模塊會(huì)用到局部變量,這些局部變量只用于這個(gè)模塊中,應(yīng)將這些局部變量隱藏起來(lái),不讓別的文件看到。則應(yīng)該在這寫(xiě)變量前加上static關(guān)鍵字實(shí)現(xiàn)。

12. 括號(hào)應(yīng)用:

在多個(gè)運(yùn)算符存在的條件下,應(yīng)該應(yīng)用括號(hào),避免優(yōu)先級(jí)的錯(cuò)誤及閱讀方便。如:

ssY = ssM * ssX + ssB; 應(yīng)寫(xiě)成 : ssY = ((ssM * ssX) + ssB);

13. 真假定義:

當(dāng)定義邏輯對(duì)立面時(shí),基于原始的陳述,以宏的方式,首先定義其中一種邏輯情形,然后再定義相反的另一種情形。

#define TRUE (1)
#define FALSE (!TRUE)



評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉