社区导航

 

搜索
查看: 501|回复: 33

[原创] MicroPython动手做(04)——零基础学MaixPy之基本示例

  [复制链接]

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2020-4-2 21:22 | 显示全部楼层 |阅读模式

1、hello micropython

 

#MicroPython动手做(04)——零基础学MaixPy之基本示例

 

#程序之一:hello micropython

 

#MicroPython动手做(04)——零基础学MaixPy之基本示例
#程序之一:hello micropython


import sys

for i in range(0, 2):

    print("hello micropython")

    print("hello ", end="micropython\n")


print("implementation:", sys.implementation)

print("platform:", sys.platform)

print("path:", sys.path)

print("Python version:", sys.version)


print("please input string, end with Enter")

r = sys.stdin.readline()

w_len = sys.stdout.write(r)

 



此内容由EEWORLD论坛网友eagler8原创,如需转载或用于商业用途需征得作者同意并注明出处



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-2 21:25 | 显示全部楼层

01.jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-2 21:25 | 显示全部楼层
本帖最后由 eagler8 于 2020-4-2 21:51 编辑

sys – 系统特定功能模块(标准库之一)

 

sys.implementation——包含有关当前Python实现的信息的对象
系统:micropython
固件:V0.5.0

 

sys.platform——运行 MicroPython 的平台
平台:MaixPy

 

sys.path——用于搜索导入模块的可变目录列表
路径:['','。','/ flash']

 

sys.version——实现的 Python 版本, 返回一个字符串
Python版本:3.4.0

 

sys.stdin——标准输入 
sys.stdout——标准输出



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 08:57 | 显示全部楼层
本帖最后由 eagler8 于 2020-4-3 09:22 编辑

2、查询闪存目录

 

#MicroPython动手做(04)——零基础学MaixPy之基本示例
#程序之二:查询闪存目录

import uos

mount_points = uos.listdir("/")
for fs in mount_points:
    print("------------")
    print(" dir:", fs)
    uos.listdir("/"+fs)

 



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 08:58 | 显示全部楼层
本帖最后由 eagler8 于 2020-4-3 09:22 编辑

02.jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 08:59 | 显示全部楼层
本帖最后由 eagler8 于 2020-4-3 09:23 编辑

uos – 基本的“操作系统”服务模块(标准库)

uos.ilistdir([dir])
此函数返回一个迭代器,然后生成与列出的目录中的条目对应的元组。如果不传参数,它列出了当前目录,否则它列出了dir给出的目录。

 

 dir: flash
['boot.py', 'main.py', 'freq.conf']



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 10:19 | 显示全部楼层

3、JSON编码和解码

 

#MicroPython动手做(04)——零基础学MaixPy之基本示例
#程序之三:JSON编码和解码

import ujson

json_str = '''{

    "name": "sipeed",

    "babies": [

        {

            "name": "maixpy",

            "birthday": 2.9102,

            "sex": "unstable"

        }

    ]

}'''


obj = ujson.loads(json_str)

print(obj["name"])

print(obj["babies"])

 



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 10:24 | 显示全部楼层

03.jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 10:24 | 显示全部楼层

ujson –编码和解码模块(标准库)
该模块实现了相应 CPython 模块的子集,允许在 Python 对象和 JSON 数据格式之间进行转换。

 

load
ujson.load(stream)
解析给定的流,将其解释为 JSON 字符串并将数据反序列化为 Python 对象。返回结果对象。解析继续,直到遇到文件结尾。如果未正确形成流中的数据,则会引发 ValueError。

 

loads
ujson.loads(str)
解析JSON str并返回一个对象。如果字符串格式出错,则引发ValueError。
 



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 11:08 | 显示全部楼层
本帖最后由 eagler8 于 2020-4-3 11:26 编辑

4、thread多线程

 

#MicroPython动手做(04)——零基础学MaixPy之基本示例
#程序之四:thread多线程


import _thread

import time


def func(name):

    while 1:

        print("hello {}".format(name))

        time.sleep(1)


_thread.start_new_thread(func,("1",))

_thread.start_new_thread(func,("2",))


while 1:

    pass

 



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 11:09 | 显示全部楼层

04.jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 11:10 | 显示全部楼层

_thread多线程支持模块
该模块提供了用于处理多个线程(也称为轻量级进程或任务)的低级原语-多个控件线程共享其全局数据空间。为了进行同步,提供了简单的锁(也称为互斥体或二进制信号量)。该threading模块提供了易于使用的功能,并在此模块之上构建了更高级别的线程API。

_thread.start_new_thread(函数,args [,kwargs ] )


启动一个新线程并返回其标识符。线程使用参数列表args(必须是元组)执行函数 功能。可选的 kwargs参数指定关键字参数的字典。当函数返回时,线程以静默方式退出。当函数以未处理的异常终止时,将打印堆栈跟踪,然后线程退出(但其他线程继续运行)。



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 11:45 | 显示全部楼层

5、更新频率演示

 

#MicroPython动手做(04)——零基础学MaixPy之基本示例
#程序之五:更新频率演示

from Maix import freq
 
cpu_freq, kpu_freq = freq.get()
print(cpu_freq, kpu_freq)
 
freq.set(cpu = 400, pll1=400, kpu_div = 1)

 

 



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 11:47 | 显示全部楼层

05.jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 12:12 | 显示全部楼层

6、引脚索引

 

#MicroPython动手做(04)——零基础学MaixPy之基本示例
#程序之六:引脚索引

from board import board_info

wifi_en_pin = board_info.WIFI_EN
print(wifi_en_pin)#输出为8
board_info.pin_map()#打印所有
board_info.pin_map(8)#只打印8号引脚的信息

 



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 12:15 | 显示全部楼层

06.jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 12:16 | 显示全部楼层

board_info内置库
主要用于方便用户使用开发板引脚配置,其中内置了对人友好的命名及接口,可以使用户减少对电器连接原理图的依赖。是内部定义的一个 Board_Info 全局变量, 使用 MicroPython 语法编写。

 

引脚索引
主要是将数字转换为人类友好的字符串,让用户方便编程。输入以下,请注意不要忽略 . 号,然后按下 tab键 进行补全,可以看到板级相关的引脚功能
board_info.

 

比如
输入以下代码,将返回数字 8,代表的是开发板的第8号引脚,其电器连接是wifi模块的使能引脚
board_info.WIFI_EN

 

查找方法
当用户不清楚引脚电器连接时,可以使用该方法查找
board_info.pin_map(pin_num)

 

参数
该方法不传入参数或者传入一个参数
pin_num: 引脚编号,范围[6,47]
当不传入参数时,将打印所有引脚的板级电气连接信息,传入参数时,仅打印指定引脚的板级电气连接信息



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 13:38 | 显示全部楼层

7、定时3秒后打印信息

 

#MicroPython动手做(04)——零基础学MaixPy之基本示例
#程序之七:定时3秒后打印信息

from machine import Timer

def on_timer(timer):
    print("time up:",timer)
    print("param:",timer.callback_arg())

tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_ONE_SHOT, period=3000, callback=on_timer, arg=on_timer)
print("period:",tim.period())

 



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 13:39 | 显示全部楼层

07.jpg



回复

使用道具 举报

868

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2020-4-3 13:40 | 显示全部楼层

machine.Timer函数
硬件定时器,可以用来定时触发任务或者处理任务,设定时间到了后可以触发中断(调用回调函数),精度比软件定时器高。 需要注意的是,定时器在不同的硬件中可能会有不同的表现。

MicroPython 的 Timer 类定义了在给定时间段内(或在一段延迟后执行一次回调)执行回调的基本操作,并允许特定的硬件上定义更多的非标准行为(因此不能移植到其他板)。

共有 3 个定时器, 每个定时器有 4 个通道可以使用。

参数
id: Timer ID, [0~2] (Timer.TIMER0~TIMER2)
channel: Timer 通道, [Timer.CHANNEL0~Timer.CHANNEL3]
mode: Timer 模式, MODE_ONE_SHOT 或者 MODE_PERIODIC 或者 MODE_PWM
period: Timer 周期, 在启动定时器后 period 时间, 回调函数将会被调用,(0,~)
unit: 设置周期的单位,默认位毫秒(ms),Timer.UNIT_S 或者 Timer.UNIT_MS 或者 Timer.UNIT_US 或者Timer.UNIT_NS
callback: 定时器回调函数, 定义了两个参数, 一个是定时器对象Timer, 第二个是在定义对象是希望传的参数arg,更多请看arg参数解释
注意:回调函数是在中断中调用的,所以在回调函数中请不要占用太长时间以及做动态分配开关中断等动作

arg: 希望传给回调函数的参数,作为回调函数的第二个参数
start: 是否在对象构建成功后立即开始定时器, True:立即开始, False:不立即开启,需要调用start()函数来启动定时器
priority: 硬件定时器中断优先级, 与特定的CPU相关, 在K210中,取值范围是[1,7], 值越小优先级越高
div: 硬件定时器分频器,取值范围[0,255], 默认为0, clk_timer(定时器时钟频率) = clk_pll0(锁相环0频率)/2^(div+1)
clk_timer*period(unit:s) 应该 < 2^32 并且 >=1



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/4 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-4 13:41 , Processed in 0.555224 second(s), 39 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表