矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 1558|回复: 12

keil中的单片机模块化编程

[复制链接]
     
发表于 2017-2-20 11:54:15 | |阅读模式
有哪位老师讲一下单片机模块化编程:我刚刚学习单片机,看到好些程序用的是模块化编程,其中有一点不明白,各个模块做好后,如何它们将这些模块连在一起,在keil中怎么操作,麻烦老师、朋友讲一讲,谢谢
     
发表于 2017-2-20 14:14:49 |
keil分MDK和C51版,你至少也要说清楚用的是什么版本吧。另外,我用过多个版本的KEIL,从来没听说过有什么模块化编程。keil就是一个标准的支持C89标准的嵌入式开发环境。
     
 楼主| 发表于 2017-2-20 15:58:55 |
wenjnyjdc 发表于 2017-2-20 14:14
keil分MDK和C51版,你至少也要说清楚用的是什么版本吧。另外,我用过多个版本的KEIL,从来没听说过有什么模 ...

哈哈,可能我的说的不清楚,就是一个工程的用C语言模块化编程,最后完成单片机工程
     
发表于 2017-2-20 18:01:05 |
如果你要编C语言的程序,并且是给51编的,我推荐你去图书馆借一本郭天祥编的书,里面有详细的KEIL建工程步骤,还有添加源文件等操作。当然,具体这些步骤,在网上也能搜到。这个过程确实挺繁琐的。如果语言基础不好,建议先补补C语言基础。
其实吧,集成开发环境都是那回事,只要把握好源文件怎么添加,头文件怎么添加,库怎么引用这些问题,软件会自动的替你完成剩余的工作。编译器会自动的把你添加的C程序源文件编译成目标文件,编译器会自动把你目标文件和添加进去的库连接起来,生成可执行代码。这一切都是自动的。早先没有继承开发环境,或者某些软件不支持自动编译(如GCC)时,都是使用MAKEFILE,写一个类似于脚本的东西来调用一个MAKE程序来实现上述自动化过程,当然MAKE程序实际上也是把脚本翻译一下,在调用编译器和链接器。
简要的说一下建工程的步骤:新建空白工程-》选择芯片(选择芯片以后,软件会自动添加启动代码)-》添加源代码文件-》添加头文件-》编译-》链接-》烧写。
     
发表于 2017-2-20 20:51:58 |
模块化编程的思想,就是把复杂的问题简单化,一个文件完成一组特定的功能,最后通过顶层文件调用,完成复杂的功能。
     
发表于 2017-2-20 20:56:21 |
举个简单的例子:控制一个发光管每秒闪烁一次,无非就是初始化,定时,输入输出控制等操作,代码总共不过百行!五六个函数一个main完全可以放在一个文件里,多简单!
     
发表于 2017-2-20 21:14:38 |
可如果程序复杂了呢?比如要完成一个SD卡语音报站的功能呢?我们想想需要完成哪些功能吧:首先初始化配置,中断,监控,操作系统配置和初始化等等必须要有的就不说了,SD卡读写,文件系统,MP3解码,音频处理(音量,均衡,淡入淡出,混叠)和IIS输出,通信状态机,通信协议栈,异常处理,Boot,IAP,……看看,一个小规模的实际工程,需要多少功能的实现才能完成整机的功能要求啊!怎么办,全放一个文件?!不可能,超万行代码一个文件里,你怎么组织,怎么阅读,怎么修改?!就算你不在乎,一个项目要快速投产,不可能等你一个人慢慢在哪码代码,码完谁帮你评审呢(规范的开发除了测试,还要求代码评审)!所以要团队合作开发。来,小王,你弄SD卡和文件系统;小周你做系统移植和基础配置;老高开做MP3和音频;我做通信和整合。好了,大家分头开工,三天完工,代码用SVN管理版本,下面我来说明下进度要求:……大家按照功能分别完成各自的代码,每个相对完整的功能写成一个文件,也就是模块!!!

评分

1

查看全部评分

     
发表于 2017-2-20 21:24:23 |
把复杂的任务逐层分解,一个(软件)工程,分成几个模块,一个模块分成几个函数,一个函数分几个段落,几行代码,这样就大事化小了。代码易写易读易修改,最重要的是,写好的模块下次再有需要,整个拷到别的地方,不用再重复编写,这就是移植。(其实真正的编程,大部分代码都是移植和配置,极少数是需要重新编码的!)

模块化编程这么牛🐮,怎么实现呢?主要靠头文件!还要特别注意编程规范,这个网上有一些,比较规范的公司也会制定规范,有素质的程序员也有好的习惯。最重要的就是大量训练和团队锻炼!
     
发表于 2017-2-20 21:30:37 |
C语言要求先声明后使用,在哪定义无所谓。因此可以将每个模块里的函数声明和配置,共享变量等放到对应的头文件,使用这个模块的其它模块或主文件在文件顶端包含这个头文件,这样就可以像使用已经定义过的函数一样使用这些被调用模块的函数或参数了!
     
发表于 2017-2-21 08:58:58 |
C:\Users\Administrator\Desktop\文件组织.jpg
C:\Users\Administrator\Desktop\源码结构.jpg
文件组织.jpg
源码结构.jpg
     
发表于 2017-2-21 09:36:36 |
补充一句:原理解释使用正常人类的自然语言,按照正常思维习惯说明的。示例用的是Codewarrior(Eclips) IDE下一个基于Freescale MK10 Cortex M4的ARM单片机,不是KEIL。主要考虑模块化编程是个思想,实现上的关键是C语言的先声明后使用,也就是头文件,所以跟编译器和硬件平台无关。
     
 楼主| 发表于 2017-2-22 08:52:31 |
wenjnyjdc 发表于 2017-2-20 18:01
如果你要编C语言的程序,并且是给51编的,我推荐你去图书馆借一本郭天祥编的书,里面有详细的KEIL建工程步 ...

keil我会操作,只是模块做好后,在keil中怎么输入,各个模块之间怎么衔接不会。
     
发表于 2017-2-23 18:04:09 |
新入门就别玩这些概念,建议先把基本功练熟了……可以找本入门教材或文章,把开发系统搭建、编译、下载、通电、各种外设例程(GPIO、定时器、串口……)跑一遍。然后再看一些进阶的算法、模型……

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-26 02:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表