openmv_timer学习(1)

openmv_timer学习(1)
1.

我们可以看到一共有两个定时器资源 TM1 , TM4 其他是没引出来的

2.对象

class timer(id)ID为1~14

timer=Timer(4)

3.方法

1)timer.init(fre,pre,period)

  • freq — 指定定时器的周期性频率。您可以将此视为定时器经过一个完整周期的频率。
  • prescaler  [0-0xffff] – 指定要加载到定时器的PSC中的值。定时器时钟源除以( prescaler + 1 )以得出定时器时钟。
  • period [0-0xffff] 用于定时器1、3、4、6-15。[0-0x3fffffff]用于定时器2和5。

指定要加载到定时器的ARR中的值。该值决定定时器的周期(即当计数器循环时)。定时器将在 period + 1 定时器时钟循环后滚动。

2)Timer.callback(fun)

设置定时器触发时所调用的函数。

# func会自动接收timer这个对象
def func(timer):
    print(timer.counter())

timer = Timer(4)
timer.init(freq=10)
# 定义回调函数
timer.callback(func)
def func():
    ...

timer = Timer(4)
timer.init(freq=10)
# 定义回调函数
timer.callback(lambda t: func())

3)Timer.channel(channel, mode, ...)

每一通道都可配置来进行脉宽调制、输出比较和输入捕捉。所有通道公用同一基本定时器,即共用同一定时器时钟。

mode 可为下列之一:

  • Timer.PWM — 配置PWM模式下的定时器(高电平有效)。
  • Timer.PWM_INVERTED — 配置PWM模式下的定时器(低电平有效)。
  • Timer.OC_TIMING — 表示未驱动引脚。
  • Timer.OC_ACTIVE — 当比较匹配出现时,引脚就被激活(活性取决于极性)。
  • Timer.OC_INACTIVE — 当比较匹配出现时,引脚失效。
  • Timer.OC_TOGGLE — 当比较匹配出现时,将切换引脚。
  • Timer.OC_FORCED_ACTIVE — 强制激活引脚(忽略比较匹配)。
  • Timer.OC_FORCED_INACTIVE — 强制使引脚失效(忽略比较匹配)。
  • Timer.IC — 配置输入捕捉模式下的定时器。
  • Timer.ENC_A — 配置编码器模式下的定时器。定时器只在CH1改变时改变。
  • Timer.ENC_B — 配置编码器模式下的定时器。定时器只在CH2改变时改变。
  • Timer.ENC_AB — 配置编码器模式下的定时器。定时器只在CH1和CH2改变时改变。
  • pin 无(默认值)或一个引脚对象。若指定(非默认值),将导致为此定时器通道配置指定引脚的替代函数。若该引脚不支持任何该定时器通道的替代函数,则将引发错误。

Timer.PWM模式的键值参数:

  • pulse_width - 决定使用的初始脉宽值。
  • pulse_width_percent - 决定使用的初始脉宽值百分比
import time
from pyb import Pin, Timer

# Frequency in Hz
# 设定定时器 频率为 1000 HZ
tim = Timer(4, freq=1000)

# Generate a 1KHz square wave on TIM4 with 50% and 75% duty cycles on channels 1 and 2, respectively.
# 利用TIM4生成的1K HZ的方波, 生成Channel1(50%占空比) Channel2(75%占空比)
ch1 = tim.channel(1, Timer.PWM, pin=Pin("P7"), pulse_width_percent=50)
ch2 = tim.channel(2, Timer.PWM, pin=Pin("P8"), pulse_width_percent=75)

while (True):
    # 空循环, 什么也不干
    time.sleep(1000)

你可能感兴趣的:(openmv_timer学习(1))