【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行
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)

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——标准输出
2、查询闪存目录
#MicroPython动手做(04)——零基础学MaixPy之基本示例
#程序之二:查询闪存目录
import uos
mount_points = uos.listdir("/")
for fs in mount_points:
print("------------")
print(" dir:", fs)
uos.listdir("/"+fs)

uos – 基本的“操作系统”服务模块(标准库)
uos.ilistdir([dir])
此函数返回一个迭代器,然后生成与列出的目录中的条目对应的元组。如果不传参数,它列出了当前目录,否则它列出了dir给出的目录。
dir: flash
['boot.py', 'main.py', 'freq.conf']
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"])

ujson –编码和解码模块(标准库)
该模块实现了相应 CPython 模块的子集,允许在 Python 对象和 JSON 数据格式之间进行转换。
load
ujson.load(stream)
解析给定的流,将其解释为 JSON 字符串并将数据反序列化为 Python 对象。返回结果对象。解析继续,直到遇到文件结尾。如果未正确形成流中的数据,则会引发 ValueError。
loads
ujson.loads(str)
解析JSON str并返回一个对象。如果字符串格式出错,则引发ValueError。
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

_thread多线程支持模块
该模块提供了用于处理多个线程(也称为轻量级进程或任务)的低级原语-多个控件线程共享其全局数据空间。为了进行同步,提供了简单的锁(也称为互斥体或二进制信号量)。该threading模块提供了易于使用的功能,并在此模块之上构建了更高级别的线程API。
_thread.start_new_thread(函数,args [,kwargs ] )
启动一个新线程并返回其标识符。线程使用参数列表args(必须是元组)执行函数 功能。可选的 kwargs参数指定关键字参数的字典。当函数返回时,线程以静默方式退出。当函数以未处理的异常终止时,将打印堆栈跟踪,然后线程退出(但其他线程继续运行)。
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)

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号引脚的信息

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]
当不传入参数时,将打印所有引脚的板级电气连接信息,传入参数时,仅打印指定引脚的板级电气连接信息。
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())

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
8、每隔 1 秒打印消息, 停止 5 秒后再重启, 5 秒后关闭并注销定时器
#MicroPython动手做(04)——零基础学MaixPy之基本示例
#程序之八:每隔 1 秒打印消息, 停止 5 秒后再重启, 5 秒后关闭并注销定时器
import time
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_PERIODIC, period=1, unit=Timer.UNIT_S, callback=on_timer, arg=on_timer, start=False, priority=1, div=0)
print("period:",tim.period())
tim.start()
time.sleep(5)
tim.stop()
time.sleep(5)
tim.restart()
time.sleep(5)
tim.stop()
del tim

machine.Timer
硬件定时器,可以用来定时触发任务或者处理任务,设定时间到了后可以触发中断(调用回调函数),精度比软件定时器高。 需要注意的是,定时器在不同的硬件中可能会有不同的表现。MicroPython 的 Timer 类定义了在给定时间段内(或在一段延迟后执行一次回调)执行回调的基本操作,并允许特定的硬件上定义更多的非标准行为(因此不能移植到其他板)。共有 3 个定时器, 每个定时器有 4 个通道可以使用。
常量
TIMER0: Timer0 id
TIMER1: Timer1 id
TIMER2: Timer2 id
CHANNEL0: Timer 通道 0
CHANNEL1: Timer 通道 1
CHANNEL2: Timer 通道 2
CHANNEL3: Timer 通道 3
MODE_ONE_SHOT: Timer 只运行一次(回调一次)
MODE_PERIODIC: Timer 始终运行(连续回调)
MODE_PWM: 定时器不用来回调函数,用以产生PWM
UNIT_S: 单位秒 (s)
UNIT_MS: 单位毫秒 (ms)
UNIT_US: 单位微秒 (us)
UNIT_NS: 单位纳秒 (ns)
9、SPI 基本读写
MicroPython动手做(04)——零基础学MaixPy之基本示例 #程序之九:SPI 基本读写 from machine import SPI spi1 = SPI(SPI.SPI1, mode=SPI.MODE_MASTER, baudrate=10000000, polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=28, mosi=29, miso=30, cs0=27) w = b'1234' r = bytearray(4) spi1.write(w) spi1.write(w, cs=SPI.CS0) spi1.write_readinto(w, r) spi1.read(5, write=0x00) spi1.readinto(r, write=0x00)

machine.SPI
SPI(Serial Peripheral Interface) 是一个同步串行协议,由主机和从机组成。
标准4线模式由 SCK(SCLK), CS(片选), MOSI, MISO 4条线连接主从机
在 K210 上, SPI 有一下特征:
共有 4 个 SPI 设备, 其中 SPI0 、SPI1、 SPI3 只能工作在主机模式下, SPI2 只能工作在从机模式时下, 在 MaixPy 上, SPI3已经用来连接了 SPI Flash, 暂时保留, 以后如果有必要再考虑开放接口与 SPI Flash 分时复用
支持 1/2/4/8 线全双工模式, 在 MaixPy 中, 目前只支持标准(摩托罗拉)4线全双工模式(即 SCK, MOSI, MISO, CS 四个引脚)
最高传输速率45M
支持DMA
4个可配置任意引脚的硬件片选

【雕爷学编程】MicroPython动手做(04)——零基础学MaixPy之尝试运行的更多相关文章
- 【雕爷学编程】MicroPython动手做(06)——零基础学MaixPy之单目摄像头
配套 OV2640摄像头:200W像素通用24P摄像头具有200万像素(1632x1232像素),其体积小.工作电压低,提供单片UXGA摄像和影像处理器的所有功能.通过SCCB总线控制,可以输出整帧. ...
- 【雕爷学编程】MicroPython动手做(07)——零基础学MaixPy之机器视觉
机器视觉 machine vision机器视觉是人工智能正在快速发展的一个分支.机器视觉作为生产过程中关键技术之一,在机器或者生产线上,机器视觉可以检测产品质量以便将不合格的产品剔除,或者指导机器人完 ...
- 【雕爷学编程】MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
配套 2.4寸LCD屏 ST7789驱动器芯片(24P 320X240) ST7789驱动器芯片2.4寸LCD屏(24P 320X240)主要参数 1. 模块名称:液晶显示模块2. 型号:KD024C ...
- 【雕爷学编程】MicroPython动手做(08)——零基础学MaixPy之识别颜色
早上用百度搜了一下“颜色识别”,多少有了一点大致的概念,还是老办法,动手做,多实验,往前走,还请各位老师多多指点. OpenCV(百度百科)是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运 ...
- 小甲鱼零基础学python第25讲课后习题动手练习--通讯录
小甲鱼零基础学python第25讲课后习题动手练习---通讯录 **************************通讯录要求******************************* 输入指令: ...
- 《Windows编程零基础学》第零节
首先很开心申请到了这一个专栏<Windows编程零基础学> 这是第一篇文章,在这里,我将讲述一些基础的知识. 什么是Windows编程 所谓Windows编程就是在Windows平台上开发 ...
- [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念
上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...
- [Python] 文科生零基础学编程系列三——数据运算符的基本类别
上一篇:[Python] 文科生零基础学编程系列二--数据类型.变量.常量的基础概念 下一篇: ※ 程序的执行过程,就是对数据进行运算的过程. 不同的数据类型,可以进行不同的运算, 按照数据运算类型的 ...
- 《零基础学HTML5+CSS3(全彩版)》读书笔记
2019年1月31日星期四 1点 <零基础学HTML5+CSS3(全彩版)>开始全面学习 前提: 11月20日开始学Python,可能因为太累了,也可能遇到了瓶颈,进入了一个迷茫期,1月6 ...
随机推荐
- js获取数组中最大值
1.es6拓展运算符... Math.max(...arr) 2.es5 apply(与方法1原理相同) Math.max.apply(null,arr) 3.for循环 let max = arr[ ...
- CSS中“~”(波浪号)、“,”(逗号)、“+”(加号)、“>”(大于号)、“ ”(空格)详解
“~”:$('pre ~ brother')表示获取pre节点的后面的所有兄弟节点,相当于nextAll()方法: “+”:$('pre + nextbrother')表示获得pre节点的下一个兄弟节 ...
- Java多线程并发系列之闭锁(Latch)和栅栏(CyclicBarrier)
JAVA并发包中有三个类用于同步一批线程的行为,分别是闭锁(Latch),信号灯(Semaphore)和栅栏(CyclicBarrier).本贴主要说明闭锁(Latch)和栅栏(CyclicBarri ...
- WMware中Ubuntu系统安装VMware tools
在VMware的虚拟机中安装完ubuntu之后,继续安装VMware tools. 一般情况下,这时都有光驱的图标,点开就能找到"VMwareTools-10.0.10-4301679.ta ...
- ExtJS2.0实用简明教程 - Form布局
Form布局由类Ext.layout.FormLayout定义,名称为form,是一种专门用于管理表单中输入字段的布局,这种布局主要用于在程序中创建表单字段或表单元素等使用. 看下 ...
- Linux环境下,MongoDB 3.6.10 的安装步骤,以及设置用户和密码,配置随处执行mongo命令启动客户端,以及所遇到的问题
https://blog.csdn.net/qinaye/article/details/87920651 二.设置MongoDB用户和密码2.1 利用./mongo命令连接mongoDB客户端../ ...
- .Net Core中使用Dapper构建泛型仓储
前言:Dapper是.NET的简单对象映射器,在速度方面拥有ORM之王的称号,与使用原始ADO.NET读取数据一样快.ORM是对象关系映射器,它负责数据库和编程语言之间的映射. 仓储主要是用来解耦业务 ...
- linux 进程管理和内存分配
1.进程相关概念 进程:正在运行中的程序 内核功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等 Process:运行中的程序的一个副本,是被载入内存的一个指令集合 进程 ID(Pro ...
- Centos7 搭建bind9.9
DNS服务器概述: DNS(Domain Name System),即域名系统. DNS服务器分为三种: 主域名服务器(Master Server).辅助域名服务器(Slave DNS).缓存服务器( ...
- 04 全局局部配置 wxml数据绑定 事件 冒泡
一. 配置介绍 一个小程序应用程序会包括最基本的两种配置文件.一种是全局的 app.json 和 页面自己的 page.json(index.json /test.json等) 注意:配置文件中不能出 ...