5.2. PikaStdDevice 标准设备

    • 在 requestment.txt 中加入 PikaStdDevice 的依赖。

    什么是标准设备模块呢?我们先从其他的脚本技术说起,比如 MicroPython,并没有统一的外设调用 API,这使得用户在使用不同的平台时,都需要重新学习 API,比如下面这个是 MicroPython 在 STM32F4 平台驱动 GPIO 的代码。

    这个是 ESP8266 的

    可以明显看到在选择 pin 的管脚时,一个用的是字符串,而另一个用的是整型数,控制电平时,一个使用 ,方法,而另一个使用,方法,总之驱动的API标准很混乱。 有没有什么办法,能够统一外设的 API,使得用户只需要熟悉一套 API,就能够在任意平台通用呢? 方法是有的,就是 PikaStdDevice 标准设备驱动模块。

    _images/1638681382807-901fa254-8323-4a9b-92ef-4e5b6e8ad5f9.png

    PikaStdDevice 是一个抽象的设备驱动模块,定义了所有的用户 API,各个平台的驱动模块只要从PikaStdDevice 继承,就能够获得一模一样的用户 API,而 PikaStdDevice 内部会间接调用平台驱动,通过多态特性重写底层的平台驱动,就可以在不同的平台工作了。

    以下是 PikaStdDevice 需要重写的平台驱动

    而我们要制作的 CH32V103 的 GPIO 模块,就从标准驱动模块中继承。

    通过这个方法,我们就可以让 STM32 的驱动模块、CH32 的驱动模块、ESP32 的驱动模块有着一模一样的用户 API。用户只要熟悉了一套 API,就可以轻松使用支持了 PikaScript 标准驱动模块的所有平台。 下面是部分被注册在驱动模块里面 C 原生驱动函数