TimerWiPy 类——控制硬件定时器笔记
此类是 WiPy 的非标准 Timer 实现。它就像machine.Timer 在 WiPy 上一样可用,但在下面的文档中命名,machine.TimerWiPy 以将其与更通用的machine.Timer类区分开来。
. ]5 R# l% N4 b) L- t硬件计时器处理周期和事件的计时。定时器可能是 MCU 和 SoC 中最灵活和异构的硬件,从模型到模型差异很大。MicroPython 的 Timer 类定义了在给定时间段内(或在一些延迟后一次)执行回调的基线操作,并允许特定板定义更多非标准行为(因此不能移植到其他板)。
请参阅有关 Timer 回调的 重要约束的 讨论。
笔记
无法在 irq 处理程序(中断)内分配内存,因此在处理程序中引发的异常不会提供太多信息。有关 micropython.alloc_emergency_exception_buf()如何解决此限制的信息,请参阅 。
- J# \2 x1 i' ?' s' K8 [
构造函数classmachine.TimerWiPy(id, ...)构造给定 id 的新计时器对象。-1 的 ID 构造一个虚拟计时器(如果板支持)。
2 a: v' ~8 r3 G3 j方法TimerWiPy.init(mode, *, width=16)初始化定时器。例子:
- tim.init(Timer.PERIODIC) # periodic 16-bit timer
3 b8 [+ R6 _, b/ x - tim.init(Timer.ONE_SHOT, width=32) # one shot 32-bit timer
复制代码 8 F& F* p8 {/ O) Q# p1 t
3 `- L. X; w4 \5 @! s. ]# ~
5 f: O( g+ m7 m5 f2 T关键字参数:
' o6 H; W8 t; v2 Q
TimerWiPy.deinit()取消初始化定时器。停止定时器,并禁用定时器外设。
TimerWiPy.channel(channel, **, freq, period, polarity=TimerWiPy.POSITIVE, duty_cycle=0)如果仅传递通道标识符,则返回先前初始化的通道对象(或者None如果没有先前的通道)。
否则,初始化并返回一个 TimerChannel 对象。
操作模式是配置到用于创建通道的 Timer 对象的模式。
仅关键字参数:
freq以Hz为单位设置频率。
period 以微秒为单位设置周期。
0 C0 p. J# o9 m0 m
笔记
无论 freq 或者 period 必须给出,不可能兼顾。
* f$ o+ K! m) k Q+ d0 { _2 {. U# [7 U5 E1 M* W& ^% ^
笔记
当通道处于 PWM 模式时,会自动分配相应的引脚,因此无需通过Pin 类分配引脚的复用功能。支持 PWM 功能的引脚如下:
GP24 在定时器 0 通道 A 上。
GP25 在定时器 1 通道 A 上。
GP9 在定时器 2 通道 B 上。
GP10 在定时器 3 通道 A 上。
GP11 在定时器 3 通道 B 上。
+ B! A6 T( X* R
; w9 a4 p9 W) g5 V
& v7 i n7 F) B