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

news2024/12/27 0:56:41

简介

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

操作步骤

下载代码

首先将代码下下来
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
在这里插入图片描述找到对应的pikascript软件包。
然后执行pkgs --update 下载软件包。
然后执行scons --target=mdk5
然后再下载到板子里。在板子上执行pika 命令,可以看到下面的界面

在这里插入图片描述
然后接下来我们就可以通过修改软件包下面的main.py 文件来修改main.py脚本了。
当然你也可以像python一样,一个命令一个命令敲。

main.py目录:
bsp\stm32\stm32wb55-st-nucleo\packages\pikascript-latest
这边我提供如何点亮小灯的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中也可以看到对应的信息
在这里插入图片描述

注意事项

小灯引脚

小灯引脚在main.py里面的PB.0 这个根据你的driver_gpio.c里面的get_num 这个函数来的,如果还没有,可以实现一下
在这里插入图片描述

报错

如果遇到编译不过的情况,
打开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版本

如何开发

根目录下面的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
最下面有个上传模块

在这里插入图片描述
输入模块名称pikaRTDevice
在这里插入图片描述选择版本号
在这里插入图片描述然后下一步上传.c即可,会自动生成PR

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/530610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Kubernetes(K8S) 上运行第一个应用

1、启动代理 : kubectl proxy 2、部署应用程序最简单的方式是使用 kubectl run 命令,该命令可以创建所有必要的组件而无需JSON或YAML文件。 --imageluksa/kubia 显示的是指定要运行的容器镜像,--port8080 选项告诉Kubernetes应用正在监听808…

每日一算-冒泡排序

冒泡排序是最简单的排序算法,如果相邻元素的顺序错误,则通过重复交换它们来工作。该算法不适用于大数据集,因为它的平均和最坏情况时间复杂度都很高。 原理 输入: arr[] {6, 3, 0, 5} 第一步: 冒泡排序从最前面的两个…

每日一算-选择排序算法

大家好,我是易安! 今天我们开始每日一算的篇章,今天带来的是选择算法。 选择排序是一种简单而高效的排序算法,它通过从列表的未排序部分中重复选择最小(或最大)元素并将其移动到列表的已排序部分来工作。该…

Kubernetes集群安全加固

本博客地址:https://security.blog.csdn.net/article/details/130678814 一、系统账户加固 1、对账户的登录次数进行检查,连续超过3次登录失败后,对用户锁定150s # 每个设备上都运行 sed -i~ 2iauth required pam_faillock.so deny3 unloc…

玩转Google开源C++单元测试框架Google Test系列(gtest)之五 - 死亡测试

一、前言 “死亡测试”名字比较恐怖,这里的“死亡”指的的是程序的崩溃。通常在测试过程中,我们需要考虑各种各样的输入,有的输入可能直接导致程序崩溃,这时我们就需要检查程序是否按照预期的方式挂掉,这也就是所谓的…

CBFS Shell .NET 22.0.85 Crack

使用虚拟文件夹、自定义菜单、工具栏、详细信息列等扩展和自定义 Windows 资源管理器! CBFS Shell 窗口资源管理器自定义 使用 CBFS Shell 为您的用户扩展 Windows 资源管理器。定义用户如何与文件和文件夹交互、自定义上下文菜单、添加信息列等。与可能导致资源管…

详细解释什么是LNMP架构

LNMP(Linux-Nginx-MySQL-PHP)是一种常见的Web服务器架构,适用于中小型网站和应用。 它包括四个核心组件: 1. Linux:LNMP架构是在Linux操作系统上运行的。通常选择Ubuntu、Debian等基于Debian的发行版作为Linux系统。 2. Nginx:Nginx是一个高性能的Web服…

支付系统设计三:支付网关设计09-总结

文章目录 前言一、设计目标二、设计实现1. 开发框架2. 配置管理后台3. 屏蔽渠道差异4. 各阶段工作内容4.1 业务处理前期准备阶段4.2 业务处理阶段4.2.1 交易处理模板获取4.2.2 参数验证4.2.3 幂等性验证4.2.4 交易数据准备服务获取4.2.5 路由处理4.2.6 支付渠道数据补全4.2.7 交…

Docker高级(完结)

一、DockerFile DockerFile简介 Docker是用来构建Docker镜像文件,由一条条docker指令和参数构成的脚本。 DockerFile构建过程 小总结 从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段, Dockerfile是…

浅析垃圾回收

大家好,我是易安! Java虚拟机的自动内存管理,将原本需要由开发人员手动回收的内存,交给垃圾回收器来自动回收。不过既然是自动机制,肯定没法做到像手动回收那般精准高效 ,而且还会带来不少与垃圾回收实现相…

《MongoDB入门教程》 - MongoDB基础介绍

前言 时间也过太快了嘛,一晃上次更新都又过去6个月了,再不更新就变成年更博客了。 对了,第一次疫情也过去了,最近开始二阳了,希望大家能继续挺过去吧 本篇文章初尝试使用ChatGPT进行,博主主要负责排版和总…

mysql使用xtrabackup方式复制过滤某一个数据库

需求: 搭建一个新的从库,只复制过滤源端数据库里的其中一个数据库workflow到新实例上。 一 操作步骤 1.1 在目标端新建一个数据库实例 略 1.2 在源端做备份 /home/urman-agent/bin/xtrabackup --defaults-file/data/mysql/etc/13314/my.cnf --targ…

redis缓存穿透、缓存击穿、缓存雪崩

一、缓存 缓存是数据交换的缓冲区,是存储数据的临时地方,一般读写性能较高。 如浏览器会把静态资源先加载到浏览器缓存中,tomcat中有应用层缓存等,则数据库也有数据库缓存。 缓存的作用: 降低后端负载提高读写效率…

ES8基本命令

ElasticSearch是面向文档型数据库 构造类似于数据库:indexes(索引库数据库)-->types(类型表)-->documents(文档行)-->field(字段字段) 但是在7.X开始,Type已经开始被废弃。 正排索引:根据主键id关联内容,然后再找关键字…

微服务—Redis实用篇-黑马头条项目-达人探店功能(使用set与zset实现)

微服务—Redis实用篇-黑马头条项目-达人探店功能(使用set与zset实现) 1、达人探店 1.1、达人探店-发布探店笔记 发布探店笔记 探店笔记类似点评网站的评价,往往是图文结合。对应的表有两个: tb_blog:探店笔记表,包含笔记中的标…

Liunx基础命令 - mkdir命令

mkdir命令 – 创建目录文件 mkdir命令来自英文词组”make directories“的缩写,其功能是用来创建目录文件。使用方法简单,但需要注意若要创建的目标目录已经存在,则会提示已存在而不继续创建,不覆盖已有文件。而目录不存在&#…

路径规划算法:基于蜉蝣优化的路径规划算法- 附代码

路径规划算法:基于蜉蝣优化的路径规划算法- 附代码 文章目录 路径规划算法:基于蜉蝣优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法蜉蝣…

Linux 无网环境下离线安装rpm

概述 搭建了私有yum仓库,想实现无网环境下Docker rpm离线安装的方法 1. 使用和配置清华源 2. 免安装下载rpm包及其依赖 3. 寻找特定的rpm包并补全依赖 清华的清华源 名称连接帮助文档备注主页清华大学开源软件镜像站 | Tsinghua Open Source MirrorAOSP | 镜像站使…

Swagger 3.0 与 Springboot 集成

springboot版本:2.3.12.RELEASE swagger版本:3.0.0 1&#xff1a;pom文件添加如下代码: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version>&…

离线安装 Docker + Docker registry(Docker仓库)

概述 通过私有yum仓库安装docker 具体内容&#xff1a; 1. 构建私有镜像仓库 2. 准备rpm包 3. 安装部署 4. ansible 安装 卸载 5. shell 脚本安装 卸载 6. 网页连接 7. 构建docker 私有仓库 1. 构建私有镜像仓库 构建简单的yum私有仓库请参考如下文档 http://t.csdn.cn/22bmb…