广告

原创 模块化编程简明教程——基于STC51单片机

2013-2-24 17:48 4048 0 13 分类: MCU/ 嵌入式

模块化编程简明教程

林德光

ldeguang1991@gmail.com

     模块化编程是嵌入式一门很重要的编程能力。对于一个稍微复杂的系统来说,编程时我们不可能把它全部写在一个.c文件里,这样很导致文件超级长,不利于调试,从审美角度来说,也显得毫无章法。更明智的做法就是采用模块化编程。下面就模块化编程进行简单讲解。(注:平台win7,环境keil4,处理器STC1T

     先给一个大致的印象。

     一个demo工程文件下的文件夹如图

20130224174442745001.png

 

20130224174449186002.jpg

     这种编程做法的优点就是结构清晰,逻辑性好。下面进行演示。

     首先,新建一个文件夹(这里我放在桌面的demo文件夹)20130224174455461003.png

demo文件夹下新建五个文件夹COMMHARDWAREOUTPUTSYSTEMUSER(这只是我常用的做法,你也可以做相应修改)

20130224174500237004.png

其中,

USER       :用于存放用户文件:包括工程项目文件、主函数文件;

SYSTEM     :用于存放系统资源文件,如uart,timer等;

HARDWARE   :用于存放板载硬件资源,如DS18b20,tube,key,lcd等;

COMM       :用于存放通讯协议文件,如I2C,SPI等;

OUTPUT     :用于存放编译过程产生的“垃圾文件”,如,目标文件(.obj),链接文                (.lst)hex文件等。

 

     然后,打开keil4,新建工程,保存在USER文件夹下,如图,

20130224174506617005.jpg

     接下来的芯片选择等我就不多说了,你懂的……

     新建demo.c,用于编写主函数,保存在USER目录下。现在USER目录下文件有:

20130224174511796006.png

     现在假设我们要加入LED模块,那么我们就在HARDWARE文件下新建led文件夹,

20130224174517626007.jpg

打开led文件夹,新建led.hled.c,如图:

20130224174522452008.jpg

     这里说明一下,.h文件一般负责“声明”函数和配置,.c文件负责“定义”函数。

     分别编写.h.c文件,这里我简单demo一下:

     led.h

20130224174527749009.jpg

     led.c

20130224174531324010.jpg

 

现在我们编写好了模块文件,重新打开demo工程,首先进行文件组织,

20130224174536210011.jpg

Groups下删掉Source Group1,新建USERHARDWARE,(其他的文件夹就不新建了,demo工程没有用到)

20130224174541434012.jpg

     选中GroupsUSER,在Files框下点击Add Files,添加进USER文件夹下的.c文件,

20130224174546992013.jpg

选中GroupsHARDWARE,在Files框下点击Add Files,添加进USER文件夹下的.c文件,

20130224174551134014.jpg

添加完,就这样……

20130224174557921015.jpg

弄完就点OK,返回到主界面,

20130224174603148016.jpg

可以看到文件结构树已经跟我们一开始新建的文件夹结构统一了,如图(其他文件夹用不到,先忽略)

20130224174442745001.png

接着,设置中间过程产生的文件的放置位置

20130224174607875017.jpg

20130224174612937018.jpg

 

编写主函数,编译:

20130224174617228019.jpg

编译之后,可以发现编译器编译出错,说找不到led.h

于是,我们还必须进行一项设置(编译路径)

20130224174622705020.jpg

20130224174627544021.jpg

20130224174632581022.jpg

20130224174637374023.jpg

20130224174641909024.jpg

编译路径我们添加进去了,再重新编译,

20130224174646268025.jpg

可以看到没有报错,(一个警告是因为我们编写的另外一个函数LED_OFF()函数没有调用),如果想不要这个警告可以这样设置,

20130224174651486026.jpg

20130224174656283027.jpg

大功告成,以后添加模块这可以按这个步骤就可以很快构建自己的工程文件了。

广告

文章评论 13条评论)

登录后参与讨论

yhb__1213_815295659 2015-12-26 17:45

哈哈哈哈哈哈哈

xkqjswj_556232960 2015-9-22 20:03

谢谢!

billzhu_345737527 2015-5-8 17:52

非常好.感谢楼主

1031565585_436848860 2015-5-3 15:26

写得好 学习了

834213830_513798211 2015-2-24 22:50

值得学习

zanyang2010 2014-9-8 10:08

难得的教程谢谢

kmopty_618208883 2014-7-28 15:44

很好,支持!!!

878377457_790554396 2013-12-3 21:51

好东西!谢了

ldeguang1991_928571341 2013-3-12 12:45

呵呵 谢谢

billzhu_345737527 2013-3-10 09:46

V5
相关推荐阅读
ldeguang1991_928571341 2013-03-27 21:29
STC51 + VS1003 + SD卡 + 62256实现语音存储与回放
  STC51 + VS1003 + SD卡 + 62256实现语音存储与回放   林德光 ldeguang1991@gmail.com      首先声明我用了vs1003,...
ldeguang1991_928571341 2013-01-14 20:42
写写总结——校挑战杯结束了……
  林德光 2012.12.16      好久没有写抒情性文章了,很多话,一直埋藏在心里,敲起键盘,却不知从何说起。就写写刚刚过去的大...
我要评论
13
0
广告