你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于码代码的一些感触

[复制链接]
黑皮男 提问时间:2017-3-23 22:19 /
现在已经工作两年多了,还记得当年毕业时为了找工作临时抱佛脚搞了搞点阵,也就是在那个时候结实了STM32,那个时候51都没玩会,见到寄存器就头疼,虽然现在也没怎么用过。同样是为了找工作,每天都看刘凯老师的视频教程。
也算幸运,找了份工作,虽然是玩的STM8,但是都是同一个母亲生的,很多相似的地方。熟悉了公司的代码,才算入门了,原来可以这样玩,定时器控制主函数的循环周期,感觉真是太牛了。由于所使用的MCU资源有限,全局变量随处可见,不过整个框架的功能结构还是很清晰的,结构体感觉很高大上啊,不太会用。没事的时候还会搞搞java和安卓开发,虽然C++中学了点类的概念,真不怎么懂,自从接触了java,对类的概念有了一些了解,随着后来工作学习的不断深入,一直都很痴迷按键控制这一部分,感觉很神秘,公司代码中按键处理的具体实现部分编译成了库,看不到具体实现,所以就一直想搞一个通用的按键控制代码。功能也算实了,自己玩的多了,感觉也不好用,没必要搞的那么麻烦。

java类的概念越来越深入,发现C中的结构体跟类很像,从此一发不可收拾,偏爱结构体,结把结构体当成了类用,尽量多的使用结构体,都是一些简单的用法,就是把一些数据包装到一起。换了两次工作,就找到了现在的工作,代码风格完全不同了,当时用的一种基于定时器的非阻塞延时方法,感觉那是相当的经典啊,但是现在没用了,工作中也一直想尝试使用,发现并不太适合现在的工作。现在所使用MCU的资源可谓是相当的丰富--F4,各个很常用的功能都被封装了起来,代码的结构更加清晰,驱动层和应用层分的也更加清晰。有了类的概念又有了分层的思想,虽然仍然是C,并没有使用类开发。现在已经很少使用全局变量了,所有的功能都尽量使用接口函数的形式提供给外部调用,即使一些仅仅是获取某个变量的值,也是以宏的形式提供出函数接口的形式。



有了这些编程的思想,码代码要容易的多了,我现在码代码的原则就尽量是不出现全局变量,功能都要以模块的形式出现。但是总有不足的地方,最近就遇到了一些问题,在处理数据时已队列的形式向另一个任务发送数据,当然数据发送的是数据块,以指针的形式发送到队列,但是生产者太快,消费者太慢,而这个生产者使用的内存块又是静态的需要重复利用,这样就会出现覆盖的问题,那为什么不使用计数器来或者是标志位来标识当前生产者所能使用的内存块数量和能使用的内存块呢,主要是因为传递给消费者的仅仅是数据指针,并没有附带一些附加属性,所以处理完也就没有相应的释放操作,有个准则也是一直听说就是malloc和free要尽量在一起使用,所以我的原则也是尽量不要把释放的工作让其他功能模块来作,也就有了困扰,生产者无法获得当前所能使用的内存块的数量,只能以游标的形式逐个取用,就发生了覆盖的现象,有点无奈,不知高手有何见解

评分

参与人数 1 ST金币 +5 收起 理由
MrJiu + 5 感悟的可以!!!!

查看全部评分

收藏 1 评论1 发布时间:2017-3-23 22:19

举报

1个回答
feixiang20 回答时间:2017-7-1 21:41:45
确实,编码的设计思路是重点

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版