
现在已经工作两年多了,还记得当年毕业时为了找工作临时抱佛脚搞了搞点阵,也就是在那个时候结实了STM32,那个时候51都没玩会,见到寄存器就头疼,虽然现在也没怎么用过。同样是为了找工作,每天都看刘凯老师的视频教程。 也算幸运,找了份工作,虽然是玩的STM8,但是都是同一个母亲生的,很多相似的地方。熟悉了公司的代码,才算入门了,原来可以这样玩,定时器控制主函数的循环周期,感觉真是太牛了 ![]() java类的概念越来越深入,发现C中的结构体跟类很像,从此一发不可收拾,偏爱结构体,结把结构体当成了类用,尽量多的使用结构体,都是一些简单的用法,就是把一些数据包装到一起。换了两次工作,就找到了现在的工作,代码风格完全不同了,当时用的一种基于定时器的非阻塞延时方法,感觉那是相当的经典啊,但是现在没用了,工作中也一直想尝试使用,发现并不太适合现在的工作。现在所使用MCU的资源可谓是相当的丰富--F4,各个很常用的功能都被封装了起来,代码的结构更加清晰,驱动层和应用层分的也更加清晰。有了类的概念又有了分层的思想,虽然仍然是C,并没有使用类开发。现在已经很少使用全局变量了,所有的功能都尽量使用接口函数的形式提供给外部调用,即使一些仅仅是获取某个变量的值,也是以宏的形式提供出函数接口的形式。 有了这些编程的思想,码代码要容易的多了,我现在码代码的原则就尽量是不出现全局变量,功能都要以模块的形式出现。但是总有不足的地方,最近就遇到了一些问题,在处理数据时已队列的形式向另一个任务发送数据,当然数据发送的是数据块,以指针的形式发送到队列,但是生产者太快,消费者太慢,而这个生产者使用的内存块又是静态的需要重复利用,这样就会出现覆盖的问题,那为什么不使用计数器来或者是标志位来标识当前生产者所能使用的内存块数量和能使用的内存块呢,主要是因为传递给消费者的仅仅是数据指针,并没有附带一些附加属性,所以处理完也就没有相应的释放操作,有个准则也是一直听说就是malloc和free要尽量在一起使用,所以我的原则也是尽量不要把释放的工作让其他功能模块来作,也就有了困扰,生产者无法获得当前所能使用的内存块的数量,只能以游标的形式逐个取用,就发生了覆盖的现象,有点无奈,不知高手有何见解 |
确实,编码的设计思路是重点 |