提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
最近接触了应广的单片机开发环境,在官网下的手册的指导下也基本会用了。但是参考的示例程序把所有的程序全部写在了初始的.c源文件里,显得有些臃肿。于是尝试着将程序模块化,便于后续根据需求修改,也能增加代码可读性,便于长时间不接触后再次快速上手。
由于网上的教程特别少,下面的东西都是我自己总结的,可能有错漏,欢迎指正。
一、应广编译源文件的规律
根据摸索,应广编译文件有如下规律:
1、.工程目录下自行创建的.c文件不会自动加入编译,需要通过 #include "xxx.c" 手动包含近来加入编译。
2、所有源文件(.c与.h)都只能严格被包含一次,包含多次会报错。其结果就是即便在头文件添加了防止重复包含的#ifndef #define #endif也没意义了,因为只能包含一次。而.c文件也不需要包含头文件(等会解释)。
3、函数类型只能为void func(void),故函数只能通过全局变量传参。
二、工程构建结构
由于上述规律,建议按照如下规则构建工程:
1、在工程初始头文件extern.c中定义全局都需使用的宏与变量。如用于函数传参的全局变量,又如:#define true 1 的值定义,引脚定义之类的各个功能都可能会使用到的宏定义。当然,也可以单独定义一个头文件写这些内容。
2、先包含全部的头文件,再包含源文件。因为各个功能模块之间可能会有依赖,所以通过包含头文件将所有全局变量与函数声明放在最前面参与编译,能避免变量或函数未定义的错误出现。
三、示例
由于我在工程目录下单独建了一个文件夹存放自己添加的文件,所有包含路径中包含目录名drivers/
.C文件头部(extern.h无修改)
如图,我直接在.C文件包含了自建的文件,头文件在前。同时,因为包含.c文件前已统一包含了头文件,故.c文件中不重复包含头文件。
总结
应广的性能弱,硬件简单,程序不会太复杂,用这种简单的单层结构应该就够了。
ps:如果要参考一些全都写到.C文件的工程,可以结合别的编辑工具查看,比如我vscode查找功能就比应广的IDE好用多了,便于快速定位。