单片机模块化编程文件创建流程

发布时间 2023-08-19 17:35:49作者: 吃不了就兜着走

一、在工程文件夹下创建一个新的文件夹,命名为“ModulesCodesFiles”,译为“模块化代码文件”,用于存放所有模块化代码文件。

二、在“ModulesCodesFiles”文件夹下为每个模块创建一个新的文件夹,命名为模块的名称,例如“Timer”或“ADC”。

   1、在每个模块的文件夹下创建两个文件,一个.c源文件(例如:Timer.c)和一个.h头文件(例如:Timer.h)。

   (1)、.c文件包含函数的定义及变量和宏的定义

   (2)、.h文件包含函数的声明和变量的声明 (不允许赋初值)以及常量和I/0口的宏定义。

   2、例如:在Timer模块的Timer.c文件中,可以编写以下代码:

 1 // Timer.c
 2 #include "Timer.h"
 3    void Timer_Init()
 4  {
 5     // 初始化Timer模块的代码
 6   }
 7    void Timer_Start()
 8  {
 9     // 启动Timer模块的代码
10   }
11    void Timer_Stop()
12  {
13     // 停止Timer模块的代码
14   }

   3、在Timer模块的Timer.h文件中,可以编写以下代码:

1 // Timer.h
2 #ifndef __TIMER_H__
3 #define __TIMER_H__
4   void Timer_Init();
5   void Timer_Start();
6   void Timer_Stop();
7 #endif 

   4、在主程序文件(例如:Main.c)中,使用预处理指令#include来包含每个模块的头文件,这样就可以在主程序中使用各个模块的功能。

   例如,在Main.c文件中,可以编写以下代码:

// Main.c
#include "Main.h"
#include "ModulesCodesFiles/Timer/Timer.h"
#include "ModulesCodesFiles/ADC/ADC.h"
   int Main(void)
 {
    // 初始化Timer模块和ADC模块的代码
    Timer_Init();
    ADC_Init();
    // 主循环的代码,使用Timer和ADC模块的功能。
    while (1) 
  {
      // 使用Timer模块的代码
      Timer_Start();
      // 使用ADC模块的代码
      ADC_Read();
      // 停止Timer模块的代码
      Timer_Stop();
    }
    return 0;
  }

三、如何编写构建脚本(例如:MakeFile)来指定编译和链接的规则

   1、在工程文件夹下创建一个名为“MakeFile”的文件,该文件是构建脚本的入口。

   2、在MakeFile文件中,定义需要编译的源文件和目标文件,以及编译规则和选项。

 1  # MakeFile
 2  # 定义目标文件名
 3  TARGET = Name_Program
 4  # 定义需要编译的源文件和头文件
 5  SRC = Main.c ModulesCodesFiles/Timer/Timer.c ModulesCodesFiles/ADC/ADC.c
 6  INC = ModulesCodesFiles/Timer/Timer.h ModulesCodesFiles/ADC/ADC.h
 7  # 定义编译规则和选项
 8  CC = gcc
 9  CFLAGS = -Wall -I.
10  # 定义目标文件的编译规则
11  $(TARGET): $(SRC) $(INC)
12  $(CC) $(CFLAGS) $(SRC) -o $(TARGET)
13  # 定义清理规则,用于删除生成的目标文件和其他临时文件
14  clean:rm -f $(TARGET)

   3、在MakeFile文件中,使用规则来指定如何编译源文件和链接目标文件。例如:在MakeFile文件中,可以使用以下规则来指定如何编译源文件。

1 $(TARGET): $(SRC) $(INC)
2 $(CC) $(CFLAGS) $(SRC) -o $(TARGET)

解释以上:这个规则表示将所有的源文件(包括Main.c、ModulesCodesFiles/Timer/Timer.c和ModulesCodesFiles/ADC/ADC.c)编译并链接成一个名为“Name_Program”的可执行文件。

   4、在Makefile文件中,可以使用其他规则来定义其他构建任务,例如“clean”任务,用于删除生成的目标文件和其他临时文件。

   5、最后,在命令行中运行“make”命令来执行MakeFile文件中的构建任务。例如,在命令行中输入以下命令来执行构建任务。