I am playing about with MicroPython on a Raspberry Pi Pico board and the Timer
class does not appear to have a destructor, so in order to stop it I need to call its deinit()
method. If I exit the program then the timer continues, which I don’t like.
Is there a recommended way of handling this; i.e. calling deinit()
when the Timer
objects goes out-of-scope?
I cannot find a link to the Timer
class on their github repo, but this is what vscode tells me about it:
class Timer:
"""
Construct a new timer object of the given ``id``. ``id`` of -1 constructs a
virtual timer (if supported by a board).
``id`` shall not be passed as a keyword argument.
See ``init`` for parameters of initialisation.
"""
PERIODIC: int = 1
ONE_SHOT: int = 0
def init(self, *, mode=PERIODIC, freq=-1, period=-1, callback=None) -> None:
"""
Initialise the timer. Example::
def mycallback(t):
pass
# periodic at 1kHz
tim.init(mode=Timer.PERIODIC, freq=1000, callback=mycallback)
# periodic with 100ms period
tim.init(period=100, callback=mycallback)
# one shot firing after 1000ms
tim.init(mode=Timer.ONE_SHOT, period=1000, callback=mycallback)
Keyword arguments:
- ``mode`` can be one of:
- ``Timer.ONE_SHOT`` - The timer runs once until the configured
period of the channel expires.
- ``Timer.PERIODIC`` - The timer runs periodically at the configured
frequency of the channel.
- ``freq`` - The timer frequency, in units of Hz. The upper bound of
the frequency is dependent on the port. When both the ``freq`` and
``period`` arguments are given, ``freq`` has a higher priority and
``period`` is ignored.
- ``period`` - The timer period, in milliseconds.
- ``callback`` - The callable to call upon expiration of the timer period.
The callback must take one argument, which is passed the Timer object.
The ``callback`` argument shall be specified. Otherwise an exception
will occur upon timer expiration:
``TypeError: 'NoneType' object isn't callable``
"""
...
def deinit(self) -> None:
"""
Deinitialises the timer. Stops the timer, and disables the timer peripheral.
"""
...
def __init__(self, *argv, **kwargs) -> None: ...