如何编写嵌入式软件开发程序
在嵌入式开发中,除了掌握基本的编程语法外,编程的思路也非常关键。这里有两种编程思路。
1分层思维。
你可能不理解分层的概念,但是你一定见过很多类似下面这样的软件结构图。
例如,RT-Thread Nano内核结构:
STM32Cube软件结构:
这个软件结构图可能有很多东西,你可能看不懂。
但是,只要你仔细看每一个区域的划分,就会发现他们把软件分成了多个区域,这其实是一个分层的思路。
例如,遥控器控制手推车的移动,包括遥控器的按钮(如前、后、左、右)、无线通信(如433)、手推车无线接收、电机驱动、电机驱动算法等。
你会如何规划这个嵌入式软件开发?
1.底层驱动层的汽车部分:电机驱动(如IO时钟和PWM配置)封装为功能,433驱动封装为功能。然后将这两个函数组织成一个驱动函数。
遥控器的部分也是一样:按键驱动(比如IO时钟、配置)封装成功能,433驱动封装成功能。
2.中间层这里举个例子,你的电机使用了一些加减速和左右转向的算法,封装成相应的中间件中间层模块功能(待应用层调用)。
3.应用层应用层是测试业务逻辑的一层,也是整个软件资源的一层。如果你在代码层画点,业务逻辑代码是容易的。
相反,你的代码非常凌乱,如果你想实现一个业务逻辑,你可能会连续加班很多天,最后写出来的代码也充满了bug。
2模块化
嵌入式编程和模块化非常重要。可以说会影响你的代码质量,影响你加班多少,甚至影响你的升职加薪。
还是上面的例子:遥控器控制手推车的移动,包括遥控器的按钮(如前、后、左、右)、无线通信(如433)、手推车无线接收、电机驱动、电机驱动算法等。
如果把所有代码都写在主函数里,你觉得能实现吗?当然,这肯定是可以实现的。
但是,如果你这样写,你的业务逻辑代码是不是很费脑费时?
还有,添加修改按钮模式和添加功能后应该怎么做?
所以需要模块化编程,将一些小模块封装成函数,提供给相应的应用层调用。
其实上面说了电机驱动(比如IO时钟、PWM配置)是封装成一个功能,其实就是一个小模块。
当然,这里的驱动函数只是一个小模块,接下来还需要进一步封装成“大模块”。
比如我还引入了一个编码器,对电机转速进行闭环检测,并通过底层电机驱动、加减速算法、编码器等,将其集成到一个电机运动函数(模块):MOTOR_Ctrl(速度、方向)。这是一个大模块(当然可以根据需求进一步封装)。
最后,还有很多重要的编程思想需要开发者去理解和掌握。在一定程度上,你的编程思路决定了你是新手还是大神。
原标题:嵌入式开发中的两种编程思路。
文章来源:【微信微信官方账号:RTThread物联网操作系统】欢迎添加关注!请注明文章来源。责任编辑:pj。
延伸 · 阅读
- 2021-09-03 16:19M.A.G .智能卡特彼勒1号模块已成功通过多项国际认证
- 2021-09-03 16:19诺基亚贝尔胡旸:5G不仅要“搭台”还要“唱戏”
- 2021-09-03 16:19有哪些半入耳式蓝牙耳机值得购买?建议使用半入耳式蓝牙
- 2021-09-03 16:19计算机网络必须知道的89个核心概念
- 2021-09-03 16:19智能网联车CANFD及车载以太网的应用
- 2021-09-03 16:19高通股价大涨 美商务部拟允许美国公司与华为合作制定5G