嵌入式开发,除了掌握基本的编程语法,编程的思路也很关键。这里有两个编程思路。
1分层思维
你可能不理解分层的思想,但是你一定见过很多像下面这样的软件结构图。
比如RT-Thread纳米内核结构:
STM 32立方体软件结构:
这种软件结构图,里面的东西可能有点多,你可能看不懂。
但是,只要你仔细看看每个区域的划分,就会发现他们把软件分成多个区域,其实是一种分层的思路。
比如遥控器控制汽车的运动,包括遥控器的按键(比如前、后、左、右),无线通信(比如433),汽车无线接收,电机驱动,电机驱动算法等。
遇到这种嵌入式软件开发,你会怎么编程?
1.底层驱动层的汽车部分:电机驱动(如IO时钟和PWM配置)封装成一个函数,433驱动封装成一个函数。然后将这两个函数安排在一个驱动函数中。
远程控制部分也是一样:关键驱动(比如IO时钟和配置)封装成一个函数,433驱动封装成一个函数。
2.中间层这里举个例子,你的电机使用了一些加减速和左右转向的算法,这些算法被封装成相应的中间件中间层模块函数(要被应用层调用)。
3.应用层应用层是测试您的业务逻辑和整个软件资源的层。如果画出代码层次,业务逻辑代码就简单了。
相反,你的代码非常乱。如果要实现一个业务逻辑,可能要连续加班好几天,最后写出来的代码也是漏洞百出。
2模块化
嵌入式编程和模块化非常重要。可以说会影响你的代码质量,影响你加班多少,甚至影响你的升职加薪。
上面的例子也是一样的:一个遥控器控制一辆车的移动,包括遥控器的按键(比如前、后、左、右),无线通信(比如433),汽车无线接收,电机驱动,电机驱动算法等。
如果把主函数里的代码都写出来,你觉得能实现吗?当然,肯定是可以实现的。
但是,这样写的话,你的业务逻辑代码是不是很浪费时间?
另外,如果您随后添加和修改键模式并添加功能,您应该怎么做?
所以你需要模块化编程,把一些小模块封装成函数,提供给相应的应用层。
其实上面也说了:电机驱动(比如IO时钟和PWM配置)封装成一个函数,其实就是一个小模块。
当然,这里的驱动功能只是一个小模块,然后还需要进一步封装成一个大模块。
比如我还引入编码器闭环检测电机转速,通过底层的电机驱动、加减速算法、编码器等,整合成一个电机运动函数(模块):MOTOR_Ctrl(速度、方向)。这是一个很大的模块(当然也可以根据需求进一步封装)。
最后,还有很多重要的编程思想需要开发者了解和掌握。一定程度上,你的编程思路决定了你是新手还是大神。
题目:嵌入式开发中的两种编程思想
来源:【微信微信官方账号:RTThread物联网操作系统】欢迎添加关注!请注明文章出处。编辑:pj
标签:编程函数电机