TimerWiPy 类——控制硬件定时器笔记
此类是 WiPy 的非标准 Timer 实现。它就像machine.Timer 在 WiPy 上一样可用,但在下面的文档中命名,machine.TimerWiPy 以将其与更通用的machine.Timer类区分开来。
$ O( y8 R+ q; C2 p5 M8 B
硬件计时器处理周期和事件的计时。定时器可能是 MCU 和 SoC 中最灵活和异构的硬件,从模型到模型差异很大。MicroPython 的 Timer 类定义了在给定时间段内(或在一些延迟后一次)执行回调的基线操作,并允许特定板定义更多非标准行为(因此不能移植到其他板)。
请参阅有关 Timer 回调的 重要约束的 讨论。
笔记
无法在 irq 处理程序(中断)内分配内存,因此在处理程序中引发的异常不会提供太多信息。有关 micropython.alloc_emergency_exception_buf()如何解决此限制的信息,请参阅 。
- v0 g3 E8 L8 t" l$ r构造函数classmachine.TimerWiPy(id, ...)构造给定 id 的新计时器对象。-1 的 ID 构造一个虚拟计时器(如果板支持)。
" j0 r% N! {- C1 b方法TimerWiPy.init(mode, *, width=16)初始化定时器。例子:
- tim.init(Timer.PERIODIC) # periodic 16-bit timer( T- p @) V1 z- j, @
- tim.init(Timer.ONE_SHOT, width=32) # one shot 32-bit timer
复制代码
# `- q# E' K4 t7 z1 _, @0 X& \1 U! Y
. e7 S; _5 L0 j. v3 n( H- e2 g: C* r关键字参数:
3 h& P$ T# Z) m, e" v
TimerWiPy.deinit()取消初始化定时器。停止定时器,并禁用定时器外设。
TimerWiPy.channel(channel, **, freq, period, polarity=TimerWiPy.POSITIVE, duty_cycle=0)如果仅传递通道标识符,则返回先前初始化的通道对象(或者None如果没有先前的通道)。
否则,初始化并返回一个 TimerChannel 对象。
操作模式是配置到用于创建通道的 Timer 对象的模式。
仅关键字参数:
freq以Hz为单位设置频率。
period 以微秒为单位设置周期。
/ K; S' L7 X4 n( h5 |7 U9 Z1 c
笔记
无论 freq 或者 period 必须给出,不可能兼顾。
2 E& m! o+ A) ` n* f' H) N
4 z) T5 A* c: P( L6 r3 u: G
笔记
当通道处于 PWM 模式时,会自动分配相应的引脚,因此无需通过Pin 类分配引脚的复用功能。支持 PWM 功能的引脚如下:
GP24 在定时器 0 通道 A 上。
GP25 在定时器 1 通道 A 上。
GP9 在定时器 2 通道 B 上。
GP10 在定时器 3 通道 A 上。
GP11 在定时器 3 通道 B 上。
# U6 M6 N9 A/ s1 v3 o
o0 m0 o5 g9 P0 M6 n' q; A+ d" G' k
1 d0 O3 R9 { m& ?. g