ruan18278816371 发表于 2014-4-18 23:15:31

最近做工程的一点点感悟

        从大一开始学C语言到现在已经是大二了,在实际做工程的时候时候才知道课掌握课堂上老师讲的C语言知识是远远不够的,以致编程的时候屡屡碰壁。看似很简单的自认为理所因当的,不会出错的代码老是出现BUG,特别是程序写大的时候,程序调了几天都没调试好的话会很让人丧失斗志!最近在基于一个51的微型系统上做一些应用,用到NRF905无线模块,12864液晶,温湿度模块,采用的模块化编程代码就出现了让我崩溃的BUG。先是在温湿度模块的代码上出现BUG,调试了好久才知道是什么原因,采用模块化编程中有多个.c文件和.h文件,.c文件主要是用来写功能函数和定义变量的.h文件是用于声明对应.c文件的函数和一些相关宏定义的,我错把变量的定义也放到.h文件中去了。然后是再调试NRF905无线模块的时候BUG又来了!一个我已在.c里面定义得数组,在引用这个数组的时候编译器总是报错:_main.c(27): error C202: 'TxRxBuf': undefined identifier,当时我心里一直纳闷明明定义这个数组了啊,怎么还会出错?最终通过百度搜索到了本论坛上的相关帖子才知道:要在一个.c文件里面使用另一个.c文件的变量,需要在这个.c文件里面用extern声明,说明这个变量来自外部。在这里要感谢阿莫电子论坛!这些BUG对大牛们是小菜一碟,对像我这样正在入门的新手却是必须掌握的很基础的东西,深刻感受到做嵌入式对C不熟是步履维艰的,还有想要做一些高级应用最好是有一定数据结构的知识,我是电子信息工程专业的,专业没有开数据结构的课程,但在实际中做工程中特别是一些复杂一点的项目才感觉的数据结构真的很有用,多亏当时进实验室时老师要求我学习数据结构的知识。以后的路还很长,不懂的问题肯定还有很多,希望大牛们多多吐槽!

mcu_lover 发表于 2014-4-19 00:54:45

小学弟,慢慢来。想当年,我们都是敲汇编过来的。只要坚持下来,就会有收获的。

albert_w 发表于 2014-4-19 01:12:54

我那些年还是幸运, 毕业的时候身边就一直坐着个牛人{:lol:}

zhangshixing 发表于 2014-4-19 07:40:48

编程的技术越高级,出的bug就越高级,当然低级还在出

Charliexie 发表于 2014-4-19 11:49:48

本帖最后由 Charliexie 于 2014-4-19 11:50 编辑

我以前也是这么认为的,.c放函数和变量,.h放需要调用的模块函数名,可是最近我看的程序,有的直接把各个模块单独放在一个.h文件中,我编译下也是可以的。就是说,只留一个main.c文件,其它的模块都只用一个.h文件即可

huangyiting1990 发表于 2014-4-19 14:29:16

比我以前学校的时候强!

1552844464 发表于 2014-4-19 14:46:03

羡慕啊,以后电子就当爱好使唤吧,这一行不能入门了,{:sleepy:}{:sleepy:}

clb7633 发表于 2014-4-19 20:18:04

同是大二的 顶

1ongquan 发表于 2014-4-19 22:27:41

现在的单片机编程迫切需要一个框架,以及针对该框架的功能程序指导,驱动程序需要规范格式

个人感觉MCU编程的工程师都是在自己悟,悟出来的一般都是时间触发的模块轮训框架

ruan18278816371 发表于 2014-4-19 22:41:55

1ongquan 发表于 2014-4-19 22:27
现在的单片机编程迫切需要一个框架,以及针对该框架的功能程序指导,驱动程序需要规范格式

个人感觉MCU编 ...

嗯!我入门新手,最近正在学一个叫MSOS的微型系统,向LINUX, UCOS高尚大系统现在还没有那水平

i7gly 发表于 2014-4-19 22:55:28

很支持9楼的观点.
我一直自学,身边没有出现过大牛,也是慢慢积攒下来的,{:lol:} ,现在回头看刚入门的代码,都不堪入目.
路很长,楼主要Hold住

1ongquan 发表于 2014-4-20 10:00:48

ruan18278816371 发表于 2014-4-19 22:41
嗯!我入门新手,最近正在学一个叫MSOS的微型系统,向LINUX, UCOS高尚大系统现在还没有那水平 ...

框架只是一个骨骼,决定最后的完成体是爬行动物还是节肢动物

ucos在小应用里面不适用,这种OS是为了比较大型的项目使用的,里面的功能多也意味着复杂度提升,需要满足一定的规模才好体现其价值

单人小程序开发还是状态机最好,状态机就是一个框架

ruan18278816371 发表于 2014-4-20 10:32:50

1ongquan 发表于 2014-4-20 10:00
框架只是一个骨骼,决定最后的完成体是爬行动物还是节肢动物

ucos在小应用里面不适用,这种OS是为了比较 ...

嗯嗯,目前状态机不是很理解,只知道这个OS是基于消息的,对消息的处理有状态机和函数指针两种方式

lsx007 发表于 2014-4-20 10:43:23

推荐楼主看一本书《深入理解计算机系统》 第二版,你会知道编译过程都是做了什么事或是如何进行编译!

WSYTJWPS1987 发表于 2014-4-20 11:36:44

受教了{:handshake:}{:handshake:}{:handshake:}{:handshake:}
页: [1]
查看完整版本: 最近做工程的一点点感悟