搜索
bottom↓
回复: 5

开源PLC学习笔记10(再从51开始 文件管理)——2013_11_22

[复制链接]

出0入0汤圆

发表于 2013-11-22 08:49:18 | 显示全部楼层 |阅读模式
本帖最后由 oldbeginner 于 2013-11-22 08:55 编辑

主函数并没有理解完,因为感觉理解主函数的一些工作还没有准备好。有了这些准备工作,主函数就是非常容易理解的了。

这里要开始理解一下文件管理,理解好了文件管理,就可以单独调试各个模块,比如笔记05中的uart模块,虽然是从程序上理解了,但是并没有做过测试,uart环形队列能正常工作吗?自己试了一下,觉得很难,这就更有必要回头把模块调试好。而要把模块分清,自然需要文件管理知识了。

首先,一栏开源PLC的文件结构,




结构还是很清晰的,首先第一种关系,利用system.h是个头文件集中
所有C文件中的全局函数定义到对应名称的头文件中(要有防重复引用机制)
所有头文件包含在system.h中;
在所有文件中包含system.h。

第二种关系,就是例外的C文件和头文件关系。

因为我是初学者,对如何安排头文件和C文件有些混淆,出现重复定义错误时手足无措,不过,现在好像解决了这个问题。
搜一下,
http://www.eeworld.com.cn/mcu/2013/0701/article_13351.html
因为内容不错,大量摘录,
1)h文件作用
1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明;
2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)

2)h文件里应该有什么
常量,结构,类型定义,函数,变量申明。
3)h文件不应该有什么
变量定义, 函数定义。(最容易产生重复定义的错误)

4)extern问题
对于变量需要extern;
对于函数不需要因为函数的缺省状态是extern.如果一个函数要改变为只在文件内可见,static

5)include包含问题
虽然申明和类型定义可以重复,不过推荐使用条件编译。
#ifndef _FILENAME_H,
#define _FILENAME_H
……
#endif

6)应该在那儿包含h文件
在需要的地方.比如某个提供接口的h文件仅仅被1.c文件需要,那么就在1.c文件里包含。编写的程序一般会有.H文件和相对应的.C文件,.H文件是声明所用,.C文件是其函数实现部分。在调用时只要包含.H文件即可,我们没有听说过#include "delay.c"这类的程序,同时也不提倡使用这个形式。**************************************************************开源PLC的文件管理格式总体上还是比较好的,虽然不排除最后做些文件管理上的更改。例如,uart.h,iap.h等就完全符合上面的观点 理解文件管理上,就可以开始测试模块了。首先测试uart模块,我已经做了一些工作,这个模块对我来说还是比较难的。另外该模块的测试会单独写在新笔记05续里。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2013-11-22 08:51:57 | 显示全部楼层
源码在哪下?

出0入0汤圆

 楼主| 发表于 2013-11-22 08:55:48 | 显示全部楼层
cqfeiyu 发表于 2013-11-22 08:51
源码在哪下?

笔记01里有链接。

出0入85汤圆

发表于 2013-11-22 10:27:30 | 显示全部楼层
支持顶顶

出0入0汤圆

 楼主| 发表于 2013-11-25 09:18:22 | 显示全部楼层
根据笔记05续,作出的uart模块,再利用FX1N中的函数就可以进行串口通讯模拟了。
首先,看一下结构

主函数是FX1NProcessing在循环,这样就可以了解输出的字符串是否是我们想要的。

为了风格一致性,也引入了system.h,作为总包含文件。


这样,文件结构清晰,就可以把精力放在文件内容上,而不是被他们之间的组织关系搞混淆。

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2013-11-27 08:08:19 | 显示全部楼层
oldbeginner 发表于 2013-11-25 09:18
根据笔记05续,作出的uart模块,再利用FX1N中的函数就可以进行串口通讯模拟了。
首先,看一下结构


模块的结构和作用

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-5-3 09:02

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

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