MicroPython内核开发笔记书内软件用例 :PWM部分实验用例

简 介: 本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的PWM软件用例部分内容。

关键词 MicroPythonMM32F3277

书稿内容
目 录
Contents
基础实验
输出基本波形
动态改变占空比
动态改变频率
总 结
存在问题
调用 pwm.init错误

§01 稿内容


当前版本的 PWM 总共有 6 个通道,它们分别对应的管脚为:

  • PWM0:PA8
  • PWM1:PA0
  • PWM2:PA2
  • PWM3:PA3
  • PWM4:PA6
  • PWM5:PA7

一、基础实验

1、输出基本波形

下面代码初始化 PWM 通道1,2, 分别占用PA0,PA2 管脚。

from machine                import PWM

pwm0 = PWM(1, freq=10000, duty=200)
pwm1 = PWM(2, freq=10000, duty=500)

print(pwm0)
print(pwm1)

print('Test PWM.')

while True:
	pass

每个PWM输出频率为 10kHz,占空比分别为 20%,50%。 下图是示波器采集到的PWM1,PWM2的输出波形。

▲ PWM1,PWM2波形

▲ PWM1,PWM2波形

2、动态改变占空比

使用 pwm.duty() 来动态改变 PWM 的占空比。 输入数值从 0 ~ 1000 对应占空比 从 0 到 100%。

下面 示例程序动态改变 pwm 输出占空比。

from machine                import PWM
import time

pwm0 = PWM(1, freq=10000, duty = 1)

duty = 1
dutyinc = 50
incdir = 0

while True:
    if incdir == 0:
        duty += dutyinc
        if duty >= 1000:
            duty = 1000
            incdir = 1
    else:
        if duty < dutyinc:
            duty = 1
            incdir = 0
        else: duty -= dutyinc
    pwm0.duty(duty)

    time.sleep_ms(20)

通过示波器可以观察到 pwm0 输出的占空比在 0 ~ 100% 之间周期进行变化。

3、动态改变频率

如果需要动态改变 pwm 频率,可以重新使用 定义语句对 PWM 进行初始化。比如

pwm0 = PWM(1, freq=10000, duty = 200)
pwm0 = PWM(1, freq=5000, duty = 500)

最终 pwm0 的频率定义为 5kHz,占空比为 500。

  结 ※


本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的PWM软件用例部分内容。

一、存在问题

1、调用 pwm.init()错误

调用 pwm.init() 函数,程序运行没有错误,但对应的管脚波形没有输出了。比如

pwm0 = PWM(1, freq=10000, duty = 200)
pwm0 = PWM(1, freq=5000, duty = 500)

pwm0.init(freq=5000)

while True:
    pass

对应 PWM 没有波形输出。

2、PWM 通道个数只有6个

现在这个版本中的PWM通道个数只有六个。


■ 相关文献链接:

● 相关图表链接:

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/125548665