如何编写嵌入式软件开发程序

2021-09-03 16:19 来源:电子说

在嵌入式开发中,除了掌握基本的编程语法外,编程的思路也非常关键。这里有两种编程思路。

1分层思维。

你可能不理解分层的概念,但是你一定见过很多类似下面这样的软件结构图。

例如,RT-Thread Nano内核结构:

嵌入式软件开发怎么编程

STM32Cube软件结构:

嵌入式软件开发怎么编程

这个软件结构图可能有很多东西,你可能看不懂。

但是,只要你仔细看每一个区域的划分,就会发现他们把软件分成了多个区域,这其实是一个分层的思路。

例如,遥控器控制手推车的移动,包括遥控器的按钮(如前、后、左、右)、无线通信(如433)、手推车无线接收、电机驱动、电机驱动算法等。

你会如何规划这个嵌入式软件开发?

1.底层驱动层的汽车部分:电机驱动(如IO时钟和PWM配置)封装为功能,433驱动封装为功能。然后将这两个函数组织成一个驱动函数。

遥控器的部分也是一样:按键驱动(比如IO时钟、配置)封装成功能,433驱动封装成功能。

2.中间层这里举个例子,你的电机使用了一些加减速和左右转向的算法,封装成相应的中间件中间层模块功能(待应用层调用)。

3.应用层应用层是测试业务逻辑的一层,也是整个软件资源的一层。如果你在代码层画点,业务逻辑代码是容易的。

相反,你的代码非常凌乱,如果你想实现一个业务逻辑,你可能会连续加班很多天,最后写出来的代码也充满了bug。

2模块化

嵌入式编程和模块化非常重要。可以说会影响你的代码质量,影响你加班多少,甚至影响你的升职加薪。

还是上面的例子:遥控器控制手推车的移动,包括遥控器的按钮(如前、后、左、右)、无线通信(如433)、手推车无线接收、电机驱动、电机驱动算法等。

如果把所有代码都写在主函数里,你觉得能实现吗?当然,这肯定是可以实现的。

但是,如果你这样写,你的业务逻辑代码是不是很费脑费时?

还有,添加修改按钮模式和添加功能后应该怎么做?

所以需要模块化编程,将一些小模块封装成函数,提供给相应的应用层调用。

其实上面说了电机驱动(比如IO时钟、PWM配置)是封装成一个功能,其实就是一个小模块。

当然,这里的驱动函数只是一个小模块,接下来还需要进一步封装成“大模块”。

比如我还引入了一个编码器,对电机转速进行闭环检测,并通过底层电机驱动、加减速算法、编码器等,将其集成到一个电机运动函数(模块):MOTOR_Ctrl(速度、方向)。这是一个大模块(当然可以根据需求进一步封装)。

最后,还有很多重要的编程思想需要开发者去理解和掌握。在一定程度上,你的编程思路决定了你是新手还是大神。

原标题:嵌入式开发中的两种编程思路。

文章来源:【微信微信官方账号:RTThread物联网操作系统】欢迎添加关注!请注明文章来源。责任编辑:pj。

延伸 · 阅读