手把手教你在RT-THREAD bsp上运行pikascript脚本点亮小灯

简介

这篇文章介绍如何在RT-THREAD bsp上运行pikascript脚本。
pikascript相当于一个小型的micropython。
最近有一些结构上的调整,写这篇文章大概介绍一下如何使用,以及开发过程中需要注意的问题。
这篇文章几乎适配所有的RT-THREAD上的bsp。(部分bsp可能需要修改一些兼容性问题)
当然 首先你要对RT-THREAD有所熟悉

熟悉网页
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/quick-start/stm32f103-simulator/stm32f103-simulator

操作步骤

下载代码

首先将代码下下来
git clone https://github.com/RT-Thread/rt-thread
在这里的bsp找到自己手上开发板,这边我选择使用/bsp/stm32/stm32wb55-st-nucleo 开发板,

在env的工具里,首先先执行下面命令menuconfigpkgs --update 以及scons --target=mdk5

这样是为了生成比较新的工程,然后打开keil烧入,查看是否可以点亮小灯。

这样做的目的是为了验证当前的基础工程是否是ok的。打开串口

然后将亮灯的小灯注释掉,方便后面点灯

选择pikascript软件包

打开menuconfig 选择language 分类下面的pikascript版本
手把手教你在RT-THREAD bsp上运行pikascript脚本点亮小灯_第1张图片找到对应的pikascript软件包。
然后执行pkgs --update 下载软件包。
然后执行scons --target=mdk5
然后再下载到板子里。在板子上执行pika 命令,可以看到下面的界面

手把手教你在RT-THREAD bsp上运行pikascript脚本点亮小灯_第2张图片
然后接下来我们就可以通过修改软件包下面的main.py 文件来修改main.py脚本了。
当然你也可以像python一样,一个命令一个命令敲。

main.py目录:
bsp\stm32\stm32wb55-st-nucleo\packages\pikascript-latest
这边我提供如何点亮小灯的py脚本,直接将这个脚本覆盖掉main.py里面内容即可

import PikaStdLib
import pikaRTThread
import PikaStdDevice as machine

thread = pikaRTThread.Thread()
mem = PikaStdLib.MemChecker()
led = machine.GPIO()
led.setPin('PB.0')
led.setMode('out')
led.enable()
led.low()

for i in range(0, 10):
    print('hello PikaScript!')
    led.low()
    thread.mdelay(500)
    led.high()
    thread.mdelay(500)

print('mem use max:')
mem.max()

修改之后记得执行一下scons --target=mdk5 这个时候会把main.py脚本设置进去,编译代码下载代码。之后执行pika可以看到小灯闪烁。
从log中也可以看到对应的信息
手把手教你在RT-THREAD bsp上运行pikascript脚本点亮小灯_第3张图片

注意事项

小灯引脚

小灯引脚PB.0要根据你板子上LED信息进行调整,这边就代表PORTB 0 脚上是LED小灯。
另外
小灯引脚在main.py里面的PB.0 这个会根据你的driver_gpio.c里面的get_num 这个函数来的,如果还没有,可以实现一下,这个函数好像是最近加的,STM32基本都实现了,其他bsp要根据GPIO定义情况实现。
手把手教你在RT-THREAD bsp上运行pikascript脚本点亮小灯_第4张图片

报错

如果遇到编译不过的情况,
打开pikascript package包下面的requestment.txt

修改如下

pikascript-core==v1.12.0
PikaStdLib==v1.12.0
pikaRTThread==v1.3.2
pikaRTDevice==v1.1.4
PikaStdDevice==v2.3.5

也可以根据
https://github.com/pikasTech/PikaPython/blob/68e6da3ae5bacda03600a17b51816bdbe9175326/packages.toml#L358
这里查看最新的版本,用最新的pikaRTDevice版本
最近改动比较大的就是pikaRTDevice 这个模块,其他模块暂时不会大改动。

如何开发

根目录下面的SConscript 文件里面执行了两个exe

    os.system(cwd + '/' + 'pikaPackage.exe')
    os.system(cwd + '/' + 'rust-msc-latest-win10.exe')

执行pikaPackage.exe 会把所有代码更新一遍(同样也会把你的本地的修改覆盖掉),所以如果你想尝试修改,切记把这个注释掉,前面加#即可,只有第一次下载的时候需要取消注释。
rust-msc-latest-win10.exe 这个会将main.py等进行转换。不需要注释

STM32开发板应该都可以跑。

待办事项

目前还不是很完善,如果感兴趣,可以帮助我们移植相应的模块到驱动接口上,
目前有以下接口:

  • PWM
  • UART
  • I2C
  • SPI
  • ADC
  • DAC
    这些函数都已经留空,大家直接修改即可,
    切记第一次执行完之后,要把SConscript 中注释掉。
    #os.system(cwd + '/' + 'pikaPackage.exe')
    os.system(cwd + '/' + 'rust-msc-latest-win10.exe')

如何提交代码

写好.c之后
打开网页pikascript.com
最下面有个上传模块

手把手教你在RT-THREAD bsp上运行pikascript脚本点亮小灯_第5张图片
输入模块名称pikaRTDevice
手把手教你在RT-THREAD bsp上运行pikascript脚本点亮小灯_第6张图片选择版本号
手把手教你在RT-THREAD bsp上运行pikascript脚本点亮小灯_第7张图片然后下一步上传.c即可,会自动生成PR

参考example
https://github.com/pikasTech/PikaPython/tree/master/package/STM32G0
https://github.com/pikasTech/PikaPython/tree/master/package/ESP32

你可能感兴趣的:(单片机,stm32,嵌入式硬件)