TimerWiPy 类——控制硬件定时器笔记
此类是 WiPy 的非标准 Timer 实现。它就像machine.Timer 在 WiPy 上一样可用,但在下面的文档中命名,machine.TimerWiPy 以将其与更通用的machine.Timer类区分开来。
* w! Y$ ~4 ]- V$ k9 z! F
硬件计时器处理周期和事件的计时。定时器可能是 MCU 和 SoC 中最灵活和异构的硬件,从模型到模型差异很大。MicroPython 的 Timer 类定义了在给定时间段内(或在一些延迟后一次)执行回调的基线操作,并允许特定板定义更多非标准行为(因此不能移植到其他板)。
请参阅有关 Timer 回调的 重要约束的 讨论。
笔记
无法在 irq 处理程序(中断)内分配内存,因此在处理程序中引发的异常不会提供太多信息。有关 micropython.alloc_emergency_exception_buf()如何解决此限制的信息,请参阅 。
) Z1 P; \2 z( Q7 a5 ~5 _
构造函数classmachine.TimerWiPy(id, ...)构造给定 id 的新计时器对象。-1 的 ID 构造一个虚拟计时器(如果板支持)。
7 R# \3 I }% j
方法TimerWiPy.init(mode, *, width=16)初始化定时器。例子:
- tim.init(Timer.PERIODIC) # periodic 16-bit timer o9 f( L. M4 l7 C i3 X" V2 k
- tim.init(Timer.ONE_SHOT, width=32) # one shot 32-bit timer
复制代码
8 ^4 X3 ^& U4 c/ l
8 _$ n4 U0 x) N7 _- O7 a/ O, U' }: V) C1 q; W& Y5 U% F
关键字参数:
* V1 J' h$ U& z6 l) l
TimerWiPy.deinit()取消初始化定时器。停止定时器,并禁用定时器外设。
TimerWiPy.channel(channel, **, freq, period, polarity=TimerWiPy.POSITIVE, duty_cycle=0)如果仅传递通道标识符,则返回先前初始化的通道对象(或者None如果没有先前的通道)。
否则,初始化并返回一个 TimerChannel 对象。
操作模式是配置到用于创建通道的 Timer 对象的模式。
仅关键字参数:
freq以Hz为单位设置频率。
period 以微秒为单位设置周期。
, S- ]# q/ D6 d$ R1 e' E
笔记
无论 freq 或者 period 必须给出,不可能兼顾。
+ W0 n9 A: U$ a: t1 B. u) P: }) r4 n+ G% J) C* `
笔记
当通道处于 PWM 模式时,会自动分配相应的引脚,因此无需通过Pin 类分配引脚的复用功能。支持 PWM 功能的引脚如下:
GP24 在定时器 0 通道 A 上。
GP25 在定时器 1 通道 A 上。
GP9 在定时器 2 通道 B 上。
GP10 在定时器 3 通道 A 上。
GP11 在定时器 3 通道 B 上。
' g' l! `2 h: t6 ?" ^$ ^
# N6 F4 o5 {" ?# }' X' `: c2 z5 L+ Z9 G' A5 c! i' ^: c$ [# |