程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

MicroPython內核開發筆記書內軟件用例 :PWM部分實驗用例

編輯:Python

簡 介: 本文給出了 MicroPython內核開發筆記:書內嵌入實驗任務 中的PWM軟件用例部分內容。

關鍵詞MicroPythonMM32F3277

書稿內容 目 錄
Contents
基礎實驗 輸出基本波形 動態改變占空比 動態改變頻率 總 結 存在問題 調用 pwm.init錯誤

 

  • 本書稿內容隸屬於 MicroPython內核開發筆記:書內嵌入實驗任務 中的內容。

 

§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波形

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通道個數只有六個。


■ 相關文獻鏈接:

  • MicroPython內核開發筆記:書內嵌入實驗任務

● 相關圖表鏈接:

  • PWM1,PWM2波形

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved