MicroPython动手做(04)——零基础学MaixPy之尝试运行-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: eagler8

MicroPython动手做(04)——零基础学MaixPy之尝试运行

[复制链接]
 楼主| 发表于 2020-4-3 11:11 | 显示全部楼层
04.jpg
 楼主| 发表于 2020-4-3 11:13 | 显示全部楼层
_thread多线程支持模块
该模块提供了用于处理多个线程(也称为轻量级进程或任务)的低级原语-多个控件线程共享其全局数据空间。为了进行同步,提供了简单的锁(也称为互斥体或二进制信号量)。该threading模块提供了易于使用的功能,并在此模块之上构建了更高级别的线程API。

_thread.start_new_thread(函数,args [,kwargs ] )
启动一个新线程并返回其标识符。线程使用参数列表args(必须是元组)执行函数 功能。可选的 kwargs参数指定关键字参数的字典。当函数返回时,线程以静默方式退出。当函数以未处理的异常终止时,将打印堆栈跟踪,然后线程退出(但其他线程继续运行)。
 楼主| 发表于 2020-4-3 11:45 | 显示全部楼层
5、更新频率演示
[mw_shl_code=arduino,true]#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)[/mw_shl_code]



 楼主| 发表于 2020-4-3 11:46 | 显示全部楼层
05.jpg
 楼主| 发表于 2020-4-3 12:11 | 显示全部楼层
6、引脚索引

[mw_shl_code=arduino,true]#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号引脚的信息[/mw_shl_code]
 楼主| 发表于 2020-4-3 12:18 | 显示全部楼层
06.jpg
 楼主| 发表于 2020-4-3 12:18 | 显示全部楼层
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]
当不传入参数时,将打印所有引脚的板级电气连接信息,传入参数时,仅打印指定引脚的板级电气连接信息。

 楼主| 发表于 2020-4-3 13:37 | 显示全部楼层
7、定时3秒后打印信息

[mw_shl_code=arduino,true]#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())[/mw_shl_code]
 楼主| 发表于 2020-4-3 13:40 | 显示全部楼层
07.jpg
 楼主| 发表于 2020-4-3 13:41 | 显示全部楼层
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

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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-29 21:15 , Processed in 0.084818 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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