单片机模块化编程概要

欢迎来到单片机编程规范指南。本指南旨在帮助开发者编写高质量、易于维护的代码,特别是在大型项目中。我们将从模块化编程的最佳实践开始,逐步深入到文件和函数注释、代码风格、命名约定等方面,以确保代码的可读性、可维护性和重用性。

1. 模块化编程的最佳实践和文件结构

文件结构

  • **主程序文件**:通常命名为 `main.c`,负责程序的主逻辑和初始化。

  • **模块文件**:每个功能模块一个文件,例如 `TemperatureSensor.c`、`LCD.c` 等。

  • **头文件**:每个模块对应的头文件,例如 `TemperatureSensor.h`、`LCD.h` 等,用于声明模块的接口。

最佳实践

  • **功能单一**:每个模块只负责一个功能,避免功能重叠。

  • **低耦合高内聚**:模块间的耦合度应尽可能低,内聚度应尽可能高。

  • **可重用性**:设计模块时考虑其在其他项目中的重用性。

2. 文件和函数注释规范

文件注释
- **主程序注释模板**:

//********************************************************************

//*  文件名:test init.c

//*  文件描述:PIC16f887,端口配置单路AD取样显示测试程序,0通道输入

//* 编译环境: windows xp +maplab ide 8.83 +picc 9.60

//* 编程者: bianjingyuan

//* 编程日期: 2024-10-30

//*  版本号:1.0

//*  修改记录:

//  硬件资源分配表:

//  din RD5

//*******************************************************************
- **模块注释模板**:

/*********************************************************************/

/*模块名称: TemperatureSensor.c */

/*模 块 名: LCD 模块 LCD 型号:HD44780 */

/*创 建 人:bianjingyuan 日期:2020-10-08 */

/*修 改 人: 日期:2020-10-08 */

/*功能描述: */

/*编译环境:maplab ide 8.83 +picc 9.60 +proteus 7.10 sp0 */

/*版 本: */

/*********************************************************************/
- **函数注释模板**:

/*********************************************************************

*

* 函 数 名: v_LcdInit

* 功能描述: LCD初始化

* 函数说明: 初始化命令:0x3c, 0x08, 0x01, 0x06, 0x10, 0x0c

* 调用函数: v_Delaymsec(),v_LcdCmd()

* 全局变量:

* 输 入: 无

* 返 回: 无

* 设 计 者:bianjingyuan 日期:2020-10-08

* 修 改 者:bianjingyuan 日期:2020-10-08

* 版 本:

***********************************************************************/

3. 代码风格

缩进和对齐

  • **缩进**:使用 Tab 作为缩进单位,一个 Tab 为四个空格大小。

  • **对齐**:预处理语句、全局数据、函数原型、标题、附加说明、函数说明、标号等均顶格书写。语句块的 `{}` 配对对齐,并与其前一行对齐。

语句结构

for(i=0; i<100; i++)

{

fun1();

fun2();

}

4. 命名约定

常量命名

  • 全部用大写字母,例如:

#define PI 3.14159

```

变量命名

  • 变量名加前缀,前缀反映变量的数据类型,用小写,反映变量意义的第一个字母大写,其他小写。

  • 变量数据类型前缀:

  • `unsigned char` 前缀 `uc`

  • `signed char` 前缀 `sc`

  • `unsigned int` 前缀 `ui`

  • `signed int` 前缀 `si`

  • `unsigned long` 前缀 `ul`

  • `signed long` 前缀 `sl`

  • `bit` 前缀 `b`

  • 指针 前缀 `p`

函数命名

  • 函数名首字大写,若包含有两个单词的每个单词首字母大写。

5. 实际代码示例

以下是一段示例代码,展示如何应用上述规范:

//*******************************************************************

//*  文件名:main.c

//*  文件描述:主程序文件,负责初始化和主循环

//* 编译环境: windows xp +maplab ide 8.83 +picc 9.60

//* 编程者: bianjingyuan

//* 编程日期: 2024-10-30

//*  版本号:1.0

//*  修改记录:

//*******************************************************************

#include "TemperatureSensor.h"

#include "LCD.h"

void main(void)

{

v_TemperatureSensorInit();

v_LcdInit();

while(1)

{

// 主循环

v_TemperatureSensorRead();

v_LcdDisplay();

}

}

void v_TemperatureSensorInit(void) // 温度传感器初始化

{

// 初始化代码

}

void v_LcdInit(void) // LCD初始化

{

// 初始化命令:0x3c, 0x08, 0x01, 0x06, 0x10, 0x0c

}

```

通过遵循这些规范,你可以提高代码的质量和开发效率。希望这份指南对你有所帮助。如果你有任何疑问或需要进一步的指导,请随时联系。

相关推荐
散峰而望3 小时前
【算法竞赛】C++函数详解:从定义、调用到高级用法
c语言·开发语言·数据结构·c++·算法·github
冷凝雨3 小时前
复数乘法(C & Simulink)
c语言·开发语言·信号处理·simulink·dsp
IT阳晨。3 小时前
【STM32】天气预报项目
stm32·单片机·嵌入式硬件
智者知已应修善业4 小时前
【求等差数列个数/无序获取最大最小次大次小】2024-3-8
c语言·c++·经验分享·笔记·算法
IT阳晨。5 小时前
【STM32】智能台灯项目
stm32·单片机·嵌入式硬件
量子炒饭大师5 小时前
Cyber骇客的逻辑节点美学 ——【初阶数据结构与算法】二叉树
c语言·数据结构·c++·链表·排序算法
炸膛坦客6 小时前
Cortex-M3-STM32F1 开发:(三十九)DMA详细介绍(3):相关寄存器、库函数介绍,配置步骤,以及内存到内存和内存到外设的实例
stm32·单片机·嵌入式硬件
量子炒饭大师6 小时前
Cyber骇客神经塔尖协议 ——【初阶数据结构与算法】堆
c语言·数据结构·c++·二叉树·github·
Herbert_hwt7 小时前
C语言赋值操作符详解:从基础使用到避坑指南
c语言
BMS小旭7 小时前
CubeMx-GPIO学习
单片机·学习