簡 介: 本文給出了 MicroPython內核開發筆記:書內嵌入實驗任務 中的PWM軟件用例部分內容。
關鍵詞
:MicroPython,MM32F3277
當前版本的 PWM 總共有 6 個通道,它們分別對應的管腳為:
下面代碼初始化 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波形
使用 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% 之間周期進行變化。
如果需要動態改變 pwm 頻率,可以重新使用 定義語句對 PWM 進行初始化。比如
pwm0 = PWM(1, freq=10000, duty = 200)
pwm0 = PWM(1, freq=5000, duty = 500)
最終 pwm0 的頻率定義為 5kHz,占空比為 500。
本文給出了 MicroPython內核開發筆記:書內嵌入實驗任務 中的PWM軟件用例部分內容。
調用 pwm.init() 函數,程序運行沒有錯誤,但對應的管腳波形沒有輸出了。比如
pwm0 = PWM(1, freq=10000, duty = 200)
pwm0 = PWM(1, freq=5000, duty = 500)
pwm0.init(freq=5000)
while True:
pass
對應 PWM 沒有波形輸出。
現在這個版本中的PWM通道個數只有六個。
■ 相關文獻鏈接:
● 相關圖表鏈接: