TimerWiPy 类——控制硬件定时器笔记
此类是 WiPy 的非标准 Timer 实现。它就像machine.Timer 在 WiPy 上一样可用,但在下面的文档中命名,machine.TimerWiPy 以将其与更通用的machine.Timer类区分开来。
+ r5 J' N1 x' v' `- d7 r% Q N
硬件计时器处理周期和事件的计时。定时器可能是 MCU 和 SoC 中最灵活和异构的硬件,从模型到模型差异很大。MicroPython 的 Timer 类定义了在给定时间段内(或在一些延迟后一次)执行回调的基线操作,并允许特定板定义更多非标准行为(因此不能移植到其他板)。
请参阅有关 Timer 回调的 重要约束的 讨论。
笔记
无法在 irq 处理程序(中断)内分配内存,因此在处理程序中引发的异常不会提供太多信息。有关 micropython.alloc_emergency_exception_buf()如何解决此限制的信息,请参阅 。
) @' N8 w0 ]& W. O
构造函数classmachine.TimerWiPy(id, ...)构造给定 id 的新计时器对象。-1 的 ID 构造一个虚拟计时器(如果板支持)。
1 _# Q8 S3 ]: s
方法TimerWiPy.init(mode, *, width=16)初始化定时器。例子:
- tim.init(Timer.PERIODIC) # periodic 16-bit timer6 e2 `5 F: s6 D: f$ b
- tim.init(Timer.ONE_SHOT, width=32) # one shot 32-bit timer
复制代码
+ s) M. d) g$ `8 ?: [( O# ?
& I7 D& E' w5 ?3 K. g
+ Z: E3 Y8 S b* j; S1 K关键字参数:
: v" h: F. s9 U5 b/ M" g6 B7 j
TimerWiPy.deinit()取消初始化定时器。停止定时器,并禁用定时器外设。
TimerWiPy.channel(channel, **, freq, period, polarity=TimerWiPy.POSITIVE, duty_cycle=0)如果仅传递通道标识符,则返回先前初始化的通道对象(或者None如果没有先前的通道)。
否则,初始化并返回一个 TimerChannel 对象。
操作模式是配置到用于创建通道的 Timer 对象的模式。
仅关键字参数:
freq以Hz为单位设置频率。
period 以微秒为单位设置周期。
! h) N, p* q/ p6 f
笔记
无论 freq 或者 period 必须给出,不可能兼顾。
( {+ {! J) F; l- v0 U5 B3 f6 d: B0 _
笔记
当通道处于 PWM 模式时,会自动分配相应的引脚,因此无需通过Pin 类分配引脚的复用功能。支持 PWM 功能的引脚如下:
GP24 在定时器 0 通道 A 上。
GP25 在定时器 1 通道 A 上。
GP9 在定时器 2 通道 B 上。
GP10 在定时器 3 通道 A 上。
GP11 在定时器 3 通道 B 上。
' o3 q: c+ s! l6 w
" }5 v5 n6 j6 T
, E! G6 I V+ f