开发板采用PYBOARD, 芯片为STM32F405VET。软件采用micropython 非常简单,micropython 与python 一样,解释性语言。
把程序通过模拟串口上传到开发板。 上传软件采用uPyCraft v1.1 其它软件也可以,串口调试组手都可以。开发板可以采用普通串口,这里我采用的是USB 模拟串口。
- import math
- import pyb
- from pyb import Timer,Pin
- import stm
- class pwm_sin:
- def __init__(self):
- self.buf = bytearray(100)
- for i in range(len(self.buf)):
- self.buf[i] = 128 + int(127 * math.sin(2 * math.pi * i / len(self.buf)))
- pa0 = Pin('PA0', Pin.OUT_PP)
- self.t6 = Timer(6, prescaler=83, period=19999)
- t2 = Timer(2, prescaler=83, period=254)
- self.ch1 = t2.channel(1, Timer.PWM, pin=pa0)
- t2.callback(self.timer_callback)
- def __del__(self):
- pass
- @micropython.native
- def timer_callback(self,timer):
- t = self.t6.counter() // 200
- self.ch1.pulse_width(self.buf[t])
- p=pwm_sin()
复制代码
未滤波前波形
经阻容低通滤波器滤波后的波形
50HZ是不是非常完美,改变参数可以调整波形频率。
|