一、背景
前面已经完成基于 RT-Thread 的应用程序框架,并且尝试了加入简单的硬件测试功能,确定应用框架可以方便的实现应用功能。
本篇开始,将前面基于 FreeRTOS 及Arduino 所做的小车实际驱动功能在 RT-Thread 应用框架下实现,编写更解决实际应用场景的练习程序,看看深入使用 RT-Thread 是否会遇到问题,相较于 Free RTOS及Arduino 有无亮点。
二、需求
程序功能需求不变,此处就不再赘述,如有兴趣可以翻阅前面“掌上实验室 – 实现运动功能”一文。
在 RT-Thread 框架下实现,基于 RT-Thread Studio 编程,主要是化解两者之间的不同,基于 RT-Thread 的特性及所提供的资源,实现原来 Arduino 下有但 RT-Thread下没有或不同的功能。具体如下:
- Arduino下实现C++的功能比较简单,只需按C++规则编写代码即可,规则不是很严格。基于 RT-Thread Studio 改如何编写?
- 由于 RT-Thread 没有提供以us为单位的读系统时间函数(micros()),需要替换为基于RT-Thread 的功能。
- 因为原来是直接使用的Arduino 库函数(PID库),只需安装后加入头文件即可。此处需要将库作为源程序加入工程。
主要差别就是这些。
三、实施
3.1 程序中 C++ 类的使用
原来程序中,由于 Arduino 可以使用类定义,故为了学习更多的内容,尝试用类定义的方式实现电机驱动功能,因为小车两侧的电机驱动需求是一样的,可以编写一套处理代码,同时供两侧电机使用。
虽说使用函数用传递参数的方式同样能实现,但从学习角度,尝试一下C++的类概念也不错,且确实通过类实现可读性感觉更好一些。
但 RT-Thread Studio 的资料中没有示例说明如何使用 C++,先按自己理解尝试了一些,未果。网上搜相关资料,有点启发,但不系统。
经不断试错ÿ