搜索
bottom↓
回复: 11

C语言模块化编程 规范编程 个人总结请拍砖

[复制链接]

出0入0汤圆

发表于 2013-5-8 12:58:58 | 显示全部楼层 |阅读模式
一、
写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-----指针指向法好理解,但编译后的代码多
                      
问题在于***************是不是代码越少 效率越高。???????哪位能描述一下这两个的好坏

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-5-8 13:19:23 | 显示全部楼层
继续。。。。
         

出0入0汤圆

发表于 2013-5-12 18:31:27 | 显示全部楼层
看不懂,楼主能详细点吗?

出0入0汤圆

发表于 2013-5-13 13:00:33 | 显示全部楼层
是得规范一下

出0入0汤圆

 楼主| 发表于 2013-5-15 10:44:32 | 显示全部楼层
李鸿鸿 发表于 2013-5-12 18:31
看不懂,楼主能详细点吗?

详细一点的请参考STM32固件库的官方程序。
简单说就是对CPU来说,处理器的外设(ADC TIMER等)、外围器件(外部ADC、TFT)等都是它的底层,或者功能部门,要做的是按规范写好它的驱动程序。1)程序模块见参考STM32固件库程序
    2)程序流程最好参考官方PDF的操作流程图,DS18B20  1602的说的很规范。所说器件厂商已经把程序写的很规范的,但只有对大客户开放。
贴企图看看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出70入0汤圆

发表于 2013-5-21 16:55:28 | 显示全部楼层
模块化编程必须要规范,程序有个几千行几万行就能知道好处了,指针超级强大,用好了事半功倍!楼主继续!顶!

出0入0汤圆

发表于 2013-8-4 22:57:41 | 显示全部楼层
tigeroser 发表于 2013-5-15 10:44
详细一点的请参考STM32固件库的官方程序。
简单说就是对CPU来说,处理器的外设(ADC TIMER等)、外围器件 ...

还是没看到实际例子!我很想理一下!就是还没理顺!

分开很多文件的时候,因为一般函数只能返回一个值,如果几个值要返回就麻烦了(当然如果不是模块化好象问题比较好解决),因为整个在一个文件中!不知道是不是我说清楚了!

出0入0汤圆

 楼主| 发表于 2013-8-6 17:54:30 | 显示全部楼层
and001 发表于 2013-8-4 22:57
还是没看到实际例子!我很想理一下!就是还没理顺!

分开很多文件的时候,因为一般函数只能返回一个值, ...

处理多数据,一般开辟个数组,然后返回指针,我是这样用的(模仿库函数的外设例程的模式)

出0入0汤圆

发表于 2013-8-7 14:46:25 | 显示全部楼层
规范是有必要的

出0入0汤圆

发表于 2013-8-7 23:37:41 | 显示全部楼层
lz发个自己的模板出来膜拜下吧..

出0入0汤圆

发表于 2013-8-7 23:53:01 | 显示全部楼层
确实啊,小工程不显,代码多了,自己都头疼,后期维更费力,宁愿开始的时候多见几个模块,多见几个头文件,以后会受益

出0入0汤圆

发表于 2013-8-8 09:40:36 | 显示全部楼层
挺不错的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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