微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > keil模块化编程求助

keil模块化编程求助

时间:10-02 整理:3721RD 点击:
我的主函数调用了超声波函数里的距离那个变量,我在头文件里也定义了那个变量,结果调用时参数根本没变化,不知道模块化编程里要调用子模块里的参数要怎么定义,网上没找资料,希望有大神可以解答!

我一直是这么理解的,模块化程序,就是将实现不同功能的函数进行封装,留出函数之间的数据接口,每一个.c文件对应一个.h文件,在c文件中编写功能函数,在h文件中存放宏定义,全局变量的声明,函数的声明等,在需要调用函数时,直接包含.h文件,就可以实现调用,单片机某一时刻只能实现某一功能,多个功能之间可以进行协调 调用,在完成当前功能后,在运行下一个要运行的功能,

别把模块化编程想得太高深了,其实模块化编程和非模块化编程差别不是很多
使用模块化编程主要是为了通用函数在不同项目中可以直接调用或修改部分代码就可以直接使用,特别是在较大的项目中都是分工合作的,不同的人编写不同的功能代码,然后整合,你不需要清楚的知道别人完成该功能的函数是怎么写的,你只需按他提供的函数说明直接调用就好了。
在非模块化编程中,我们通常是将所有的子函数放在一个.C文件中,然后在main函数中调用。
而在模块化编程中,通常的做法是将子函数按功能分类放在不同的.C文件中,然后在.h中将对应.C中需要对外公开的函数进行申明,在main函数中通过include引用后再调用。
简单的说就是模块化编程就是将一个.C文件按子函数功能分割为多个.C文件。你一个.C文件该怎么调用子函数的的,多个.C文件也一样调用。

使用模块化编程主要是为了通过  表面看起来是你理解的这样,但设计思路却不是简单的把一个分成多个。面向过程的思路:程序是一个操作流水线,有起始、分支判断(循环)和结束。模块化或者对象化的思路:首先定义和实现各个模块的属性和行为,使之有明确的功能和接口,然后整个程序的运行过程就是各个模块的通信过程,main方法(函数)仅仅作为程序运行的一个总入口。在高度模块化的项目中,你是不会看到main方法的大循环的,取而代之的是一个调度系统。

子模块里的参数可以用返回值

赞成1楼的说法,模块化绝对不是简单的把程序分割。好的模块就像一个黑盒子,留有几个接口,别的来不需要明白里面是什么东西,只要调用接口就行。
目前我还在学习怎么模块化,做的项目感觉太冗余,变量太多,希望可以同大家一起来探讨下
LZ说的要在主函数里面调用这个变量,这个变量要声明为全局变量,也可以直接封装一个函数,返回该变量的值,在主函数里面直接调用这个函数。

看年圻地看看看

怎么理解调度系统?有相关的例子说明吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top