TimerWiPy 类——控制硬件定时器笔记
此类是 WiPy 的非标准 Timer 实现。它就像machine.Timer 在 WiPy 上一样可用,但在下面的文档中命名,machine.TimerWiPy 以将其与更通用的machine.Timer类区分开来。
0 s2 U2 z t) W4 z8 r ?" V硬件计时器处理周期和事件的计时。定时器可能是 MCU 和 SoC 中最灵活和异构的硬件,从模型到模型差异很大。MicroPython 的 Timer 类定义了在给定时间段内(或在一些延迟后一次)执行回调的基线操作,并允许特定板定义更多非标准行为(因此不能移植到其他板)。
请参阅有关 Timer 回调的 重要约束的 讨论。
笔记
无法在 irq 处理程序(中断)内分配内存,因此在处理程序中引发的异常不会提供太多信息。有关 micropython.alloc_emergency_exception_buf()如何解决此限制的信息,请参阅 。
" d" {9 I+ k/ O* K+ l
构造函数classmachine.TimerWiPy(id, ...)构造给定 id 的新计时器对象。-1 的 ID 构造一个虚拟计时器(如果板支持)。
# C' G& {' F% D6 F' E* o3 E
方法TimerWiPy.init(mode, *, width=16)初始化定时器。例子:
- tim.init(Timer.PERIODIC) # periodic 16-bit timer0 S! y- U5 c6 W h4 G, C
- tim.init(Timer.ONE_SHOT, width=32) # one shot 32-bit timer
复制代码 9 I1 v+ G" M( f8 V9 I% U
$ K' z6 \% }9 U6 A" t) [+ }+ z S, |: M' g
关键字参数:
1 x _ i+ X" h2 \' B/ ~7 v
TimerWiPy.deinit()取消初始化定时器。停止定时器,并禁用定时器外设。
TimerWiPy.channel(channel, **, freq, period, polarity=TimerWiPy.POSITIVE, duty_cycle=0)如果仅传递通道标识符,则返回先前初始化的通道对象(或者None如果没有先前的通道)。
否则,初始化并返回一个 TimerChannel 对象。
操作模式是配置到用于创建通道的 Timer 对象的模式。
仅关键字参数:
freq以Hz为单位设置频率。
period 以微秒为单位设置周期。
2 G7 \( G# d' W; ~8 b( ?2 c' I3 c
笔记
无论 freq 或者 period 必须给出,不可能兼顾。
& \* ~4 v) _6 I5 Z% ~: G5 r# N# K) A' w" I& v/ ]: Y5 r5 @6 e+ @
笔记
当通道处于 PWM 模式时,会自动分配相应的引脚,因此无需通过Pin 类分配引脚的复用功能。支持 PWM 功能的引脚如下:
GP24 在定时器 0 通道 A 上。
GP25 在定时器 1 通道 A 上。
GP9 在定时器 2 通道 B 上。
GP10 在定时器 3 通道 A 上。
GP11 在定时器 3 通道 B 上。
+ a# \. W! m9 N- I/ n
. J5 P) Z( L% m% M8 y$ F2 N% L, t7 n