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

举报
tsinghuazhuoqing 发表于 2022/07/01 23:06:52 2022/07/01
【摘要】 简 介: 本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的PWM软件用例部分内容。 关键词: MicroPython,MM32F3277 ...

简 介: 本文给出了 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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

每个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)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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

3、动态改变频率

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

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

  
 
  • 1
  • 2

最终 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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

对应 PWM 没有波形输出。

2、PWM 通道个数只有6个

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


■ 相关文献链接:

● 相关图表链接:

文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/125548665

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。