C语言模块化编程 规范编程 个人总结请拍砖
一、写C程序,应该像书上说的采用模块化编程,但书上没具体讲解,合作编程时没有一定的约束是行不通,据说LINUX上的模块编程很规范,应该学学
个人认为一般的编程应该像STM32上的程序模块一样,=====不同的外设驱动如timer gpio等放在一个文件里, =====不同的外围硬件驱动如TFT液晶,传感器AD DA的驱动放在一个文件里,主函数是用一个main.c管理。用宏定义之类的进行处理,确保在main中能调用到这两个文件中的任何一个C函数,如下图main所示
二、模块化中的数据传递的效率与代码问题---------子函数的目的是调用外设、外围硬件得到的数据并存入在数组buff中,有主函数调用它时,传递数组据
我一般采用的方法:在main中调用子函数,子函数返回数组buff的地址,通过这个地址来访问子函数中数组数据(C 函数return一堆数吧?)
问题在于 在main函数中如何得到子函数的数组buff中的数,
法1:在main中开辟数组,通过子函数传递的首地址,把数组buff的内容复现过来
法2:在main中定义指针变量,通过子函数传递的首地址,指向数组buff
用一个18B20来测试如下
本例中ds18b20.c中的ID子函数的目的是得到18B20的ID号,并存入缓存buff中,
在main函数中,采用法1 ,定义一个数组RomComd ,通过buff的首地址把ID号复制进来。(ID子函数返回的是buff数组的首地址)
采用法2 ,定义一指针变量*p,指向buff的首地址,指向buff数组。
经验证: 法1-----多定义一个变量数组用来复制内容,但定义代码少(实测,少一10个code)
法2-----指针指向法好理解,但编译后的代码多
问题在于***************是不是代码越少 效率越高。???????哪位能描述一下这两个的好坏 继续。。。。
看不懂,楼主能详细点吗? 是得规范一下 李鸿鸿 发表于 2013-5-12 18:31 static/image/common/back.gif
看不懂,楼主能详细点吗?
详细一点的请参考STM32固件库的官方程序。
简单说就是对CPU来说,处理器的外设(ADC TIMER等)、外围器件(外部ADC、TFT)等都是它的底层,或者功能部门,要做的是按规范写好它的驱动程序。1)程序模块见参考STM32固件库程序
2)程序流程最好参考官方PDF的操作流程图,DS18B201602的说的很规范。所说器件厂商已经把程序写的很规范的,但只有对大客户开放。
贴企图看看
模块化编程必须要规范,程序有个几千行几万行就能知道好处了,指针超级强大,用好了事半功倍!楼主继续!顶! tigeroser 发表于 2013-5-15 10:44 static/image/common/back.gif
详细一点的请参考STM32固件库的官方程序。
简单说就是对CPU来说,处理器的外设(ADC TIMER等)、外围器件 ...
还是没看到实际例子!我很想理一下!就是还没理顺!
分开很多文件的时候,因为一般函数只能返回一个值,如果几个值要返回就麻烦了(当然如果不是模块化好象问题比较好解决),因为整个在一个文件中!不知道是不是我说清楚了! and001 发表于 2013-8-4 22:57 static/image/common/back.gif
还是没看到实际例子!我很想理一下!就是还没理顺!
分开很多文件的时候,因为一般函数只能返回一个值, ...
处理多数据,一般开辟个数组,然后返回指针,我是这样用的(模仿库函数的外设例程的模式) 规范是有必要的 lz发个自己的模板出来膜拜下吧..{:smile:} 确实啊,小工程不显,代码多了,自己都头疼,后期维更费力,宁愿开始的时候多见几个模块,多见几个头文件,以后会受益 挺不错的
页:
[1]