|
TimerWiPy 类——控制硬件定时器 笔记 此类是 WiPy 的非标准 Timer 实现。它就像machine.Timer 在 WiPy 上一样可用,但在下面的文档中命名,machine.TimerWiPy 以将其与更通用的machine.Timer类区分开来。 , ~# q0 g7 ^7 z3 L1 v, w! b1 j& I
硬件计时器处理周期和事件的计时。定时器可能是 MCU 和 SoC 中最灵活和异构的硬件,从模型到模型差异很大。MicroPython 的 Timer 类定义了在给定时间段内(或在一些延迟后一次)执行回调的基线操作,并允许特定板定义更多非标准行为(因此不能移植到其他板)。 请参阅有关 Timer 回调的 重要约束的 讨论。 笔记 无法在 irq 处理程序(中断)内分配内存,因此在处理程序中引发的异常不会提供太多信息。有关 micropython.alloc_emergency_exception_buf()如何解决此限制的信息,请参阅 。
1 @8 M1 `0 e9 W F0 |8 J1 O构造函数classmachine.TimerWiPy(id, ...)构造给定 id 的新计时器对象。-1 的 ID 构造一个虚拟计时器(如果板支持)。
# B9 E" u) `$ ?, v' Y方法TimerWiPy.init(mode, *, width=16)初始化定时器。例子: - tim.init(Timer.PERIODIC) # periodic 16-bit timer
3 U/ u5 v, X. N3 X, K, j - tim.init(Timer.ONE_SHOT, width=32) # one shot 32-bit timer
复制代码
2 Q2 S+ d4 J, l3 d3 B) X
" }$ Q; i! P+ a0 B8 m! B0 J' B: c/ e" ^ q1 P' ~0 A; o9 m
关键字参数:
% s( b: ~; ]; x TimerWiPy.deinit()取消初始化定时器。停止定时器,并禁用定时器外设。 TimerWiPy.channel(channel, **, freq, period, polarity=TimerWiPy.POSITIVE, duty_cycle=0)如果仅传递通道标识符,则返回先前初始化的通道对象(或者None如果没有先前的通道)。 否则,初始化并返回一个 TimerChannel 对象。 操作模式是配置到用于创建通道的 Timer 对象的模式。 仅关键字参数: freq以Hz为单位设置频率。 period 以微秒为单位设置周期。
2 ~6 k: z$ ]+ {3 C4 @. X
笔记 无论 freq 或者 period 必须给出,不可能兼顾。
. O. A1 m. ~# [7 X+ Z8 i- w7 w. f9 C. ~8 O A0 u3 u+ p0 ~8 {# T4 h$ X
笔记 当通道处于 PWM 模式时,会自动分配相应的引脚,因此无需通过Pin 类分配引脚的复用功能。支持 PWM 功能的引脚如下: GP24 在定时器 0 通道 A 上。 GP25 在定时器 1 通道 A 上。 GP9 在定时器 2 通道 B 上。 GP10 在定时器 3 通道 A 上。 GP11 在定时器 3 通道 B 上。 : C5 z; N3 `$ |4 B! ], F
; `/ e" q5 g6 ~3 Y z6 l- r! w7 d! o9 H# ~& ~+ j$ W) b
6 S$ j" A/ l8 K4 G9 m类 TimerChannel — 为计时器设置通道定时器通道用于使用定时器生成/捕获信号。 TimerChannel 对象是使用 Timer.channel() 方法创建的。 方法timerchannel.irq(*, trigger, priority=1, handler=None)此回调的行为在很大程度上取决于计时器通道的操作模式: 如果 mode 是 TimerWiPy.PERIODIC回调,则以配置的频率或周期定期执行。 如果 mode 是TimerWiPy.ONE_SHOT 回调,则在配置的计时器到期时执行一次。 如果 mode 是 TimerWiPy.PWM则在达到占空比值时执行回调。 ( p- K' G0 r( h" g K; L
6 `. y* f# O! o _0 N: e3 P
接受的参数是: ! D+ B6 B5 |! R1 B9 p% _& t
返回一个回调对象。 timerchannel.freq([value)获取或设置定时器通道频率(以赫兹为单位)。 timerchannel.period([value)获取或设置定时器通道周期(以微秒为单位)。 timerchannel.duty_cycle([value)获取或设置 PWM 信号的占空比。这是一个百分比(0.00-100.00)。由于 WiPy 不支持浮点数,因此必须在 0-10000 范围内指定占空比,其中 10000 表示 100.00,5050 表示 50.50,依此类推。 ' {9 }4 q7 ~; G6 k+ _
常数TimerWiPy.ONE_SHOTTimerWiPy.PERIODIC定时器操作模式。 ) @4 J& D9 y: W. p* Q) O- C. W
( c, ]/ {( s- |- G% d- N8 |
" z( m, o3 y3 I; S, x, N0 C2 I |
|