TimerWiPy 类——控制硬件定时器¶
笔记
此类是 WiPy 的非标准 Timer 实现。它就像machine.Timer
在 WiPy 上一样可用,但在下面的文档中命名,machine.TimerWiPy
以将其与更通用的machine.Timer类区分开来。
硬件计时器处理周期和事件的计时。定时器可能是 MCU 和 SoC 中最灵活和异构的硬件,从模型到模型差异很大。MicroPython 的 Timer 类定义了在给定时间段内(或在一些延迟后一次)执行回调的基线操作,并允许特定板定义更多非标准行为(因此不能移植到其他板)。
请参阅有关 Timer 回调的 重要约束的 讨论。
笔记
无法在 irq 处理程序(中断)内分配内存,因此在处理程序中引发的异常不会提供太多信息。有关
micropython.alloc_emergency_exception_buf()
如何解决此限制的信息,请参阅 。
方法¶
-
TimerWiPy.
init
(mode, *, width=16)¶ 初始化定时器。例子:
tim.init(Timer.PERIODIC) # periodic 16-bit timer tim.init(Timer.ONE_SHOT, width=32) # one shot 32-bit timer
关键字参数:
mode
可以是以下之一:TimerWiPy.ONE_SHOT
- 定时器运行一次,直到通道的配置周期到期。TimerWiPy.PERIODIC
- 定时器以通道的配置频率定期运行。TimerWiPy.PWM
- 在引脚上输出 PWM 信号。
width
必须是 16 或 32(位)。对于< 5Hz(或大周期)的非常低的频率,应使用 32 位定时器。32 位模式仅适用于ONE_SHOT
和PERIODIC
模式。
-
TimerWiPy.
deinit
()¶ 取消初始化定时器。停止定时器,并禁用定时器外设。
-
TimerWiPy.
channel
(channel, **, freq, period, polarity=TimerWiPy.POSITIVE, duty_cycle=0)¶ 如果仅传递通道标识符,则返回先前初始化的通道对象(或者
None
如果没有先前的通道)。否则,初始化并返回一个 TimerChannel 对象。
操作模式是配置到用于创建通道的 Timer 对象的模式。
channel
如果定时器的宽度是 16 位,则必须是TIMER.A
,TIMER.B
。如果宽度是 32 位,那么它必须是 .TIMER.A | TIMER.B
.
仅关键字参数:
freq
以Hz为单位设置频率。period
以微秒为单位设置周期。
笔记
无论
freq
或者period
必须给出,不可能兼顾。polarity
这适用于PWM
,并定义了占空比的极性duty_cycle
仅适用于PWM
. 这是一个百分比(0.00-100.00)。由于 WiPy 不支持浮点数,因此必须在 0-10000 范围内指定占空比,其中 10000 表示 100.00,5050 表示 50.50,依此类推。
笔记
当通道处于 PWM 模式时,会自动分配相应的引脚,因此无需通过
Pin
类分配引脚的复用功能。支持 PWM 功能的引脚如下:GP24
在定时器 0 通道 A 上。GP25
在定时器 1 通道 A 上。GP9
在定时器 2 通道 B 上。GP10
在定时器 3 通道 A 上。GP11
在定时器 3 通道 B 上。
类 TimerChannel — 为计时器设置通道¶
定时器通道用于使用定时器生成/捕获信号。
TimerChannel 对象是使用 Timer.channel() 方法创建的。
方法¶
-
timerchannel.
irq
(*, trigger, priority=1, handler=None)¶ 此回调的行为在很大程度上取决于计时器通道的操作模式:
如果 mode 是
TimerWiPy.PERIODIC
回调,则以配置的频率或周期定期执行。如果 mode 是
TimerWiPy.ONE_SHOT
回调,则在配置的计时器到期时执行一次。如果 mode 是
TimerWiPy.PWM
则在达到占空比值时执行回调。
接受的参数是:
priority
中断级别。可以取 1-7 范围内的值。更高的值代表更高的优先级。handler
是触发中断时调用的可选函数。trigger
TimerWiPy.TIMEOUT
当操作模式为TimerWiPy.PERIODIC
或 时必须为TimerWiPy.ONE_SHOT
。在模式为TimerWiPy.PWM
触发的情况下,必须等于TimerWiPy.MATCH
。
返回一个回调对象。
-
timerchannel.
freq
([value])¶ 获取或设置定时器通道频率(以赫兹为单位)。
-
timerchannel.
period
([value])¶ 获取或设置定时器通道周期(以微秒为单位)。
-
timerchannel.
duty_cycle
([value])¶ 获取或设置 PWM 信号的占空比。这是一个百分比(0.00-100.00)。由于 WiPy 不支持浮点数,因此必须在 0-10000 范围内指定占空比,其中 10000 表示 100.00,5050 表示 50.50,依此类推。