微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 实习工作小结第十天

实习工作小结第十天

时间:10-02 整理:3721RD 点击:
    今天做的事情比昨天多!所以收获也是比昨天要多。事实证明,只要你努力去做事情,就肯定会有收获的!说实话,其实每天工作完之后都很累,除了睡觉什么都不想做,但是时间又很长,感觉就这么睡了有点可惜,大家有什么好的建议不妨说说!今天就直接上经验了,没有额外学习什么东西,就争取吧经验讲清楚一点!        1.     c/c++语法中有说明,在工程中定义的全局变量可以在整个工程文件中自由地引用,这是一种很危险的做法,同时也不利于代码的重用(有可能出现重定义的情况)。一种可行的做法是将全局变量前面加上static以保证只在本文件中可见。如果确实需要在其他的文件中引用,可以使用关键字extern进行声明(当然,被static生命的关键字是不可以的),同时,最好在后面标注变量的出处。我昨天说了一点关于代码结构组织的看法,这一点经验也可以说是组织代码的一个小技巧

    2.      在进行数据传输的时候,为了增加数据传输的稳定性,除了在软件上增加校验的方法,还必须在硬件上下功夫,比如485通信的时候,增加配套的终端电阻是很有必要的,能够在根本上增加数据传输的稳定性,这个是真的本质上的飞跃。软件的校验,终究只是硬件能力不足的弥补。

    3.     为了防止CRC校验的时候,大小写不匹配的问题,可以比较数值而不是ASCII码。这一点是为了提高用户体验,在输入数据的时候,操作人员会严格遵守规范,这个当然没有问题,但是在加上校验码的时候,就可能偷懒输入小写或是习惯输入大写,这个是有必要考虑的。但是其实理想的情况应该是操作人员只需要输入数据,而校验码由程序自动生成,这才是一种真正好的用户体验。

    4.     在编译的时候可以将不用的函数,变量等删除,这样有利于提高编译的成功率。这个经验是因为我在写代码的时候出现了内存溢出的情况,经过百度,发现是由于有过多的变量导致的,然后我就清理了其中一些变量,才完成编译。其实到这里的时候我也发行我的只是体系还是有欠缺,这方面的知识还是应该补充一点才好!

5.     在进行ASCII与HEX码转换的时候,完全可以避免加减运算,而使用移位运算来代替,这样可以大幅度提高效率!这个经验也是在写代码的时候发现的。这个是看见了一个好的结构!两种方式的对比如下:

             第一种:
         CRC_change[0] = (CRC_change[0] << 12)&0xf000;         CRC_change[1] = (CRC_change[1] << 8)&0x0f00;
         CRC_change[2] = (CRC_change[2] << 4)&0x00f0;
         CRC_change[3] = (CRC_change[3] << 0)&0x000f;
         CRC_HEX =         CRC_change[0]+CRC_change[1]+CRC_change[2]+CRC_change[3];
         return CRC_HEX;
         第二种:
         return  (CRC_change[0] << 12)|(CRC_change[1] << 8)|(CRC_change[2] << 4)|(CRC_change[3] << 0);
    两种方式,第二种至少有几个好处:减少了变量的使用;提高了计算的速度;减少了代码的冗余,保护了上一个阶段的数据(在数据处理的时候,尽量保护原始的数据)等等。
    今天是真的很累的了,没有进行其他的学习。就是这样了!
PS:本人现在大三,在嵌入式领域只能算是一个刚刚看见门槛的小学生,上面的写的东西大部分是我看的资料,也有一些是我的想法。如果您不小心点开了,又不幸看完了,那么我还真是感激不尽!当然,如果您愿意留下只言片语,或是交流,或是指正,鄙人更是感激万分!
     末学后进在这里,希望与大家一起进步,成长!

给你点个赞,希望你多多分享一些编程的经验;另外我认为减少全局变量的定义,使用指针来进行变量地址的传递也是很有效率且移植性很高的;特别是数组变量。希望你多多分享一些关于指针方面的程序使用需要注意的事项。

牛,佩服诶!

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

网站地图

Top