同一个定时器,多个通道,频率必须一致,占空比可以不同
脉冲经过光耦会失真
代码
pwm_demo.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| #include <rtthread.h> #include <rtdevice.h>
#define PWM_DEV_NAME "pwm1" #define PWM_CHANNEL1 1 #define PWM_CHANNEL2 2
struct rt_device_pwm *pwm_dev;
static int pwm_demo(int argc, char *argv[]) { rt_uint32_t period, pulse1, pulse2;
pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME); if (pwm_dev == RT_NULL) { rt_kprintf("can't find %s device!\n", PWM_DEV_NAME); return -1; }
period = 50000; pulse1 = period * 30 / 100; pulse2 = period * 60 / 100;
rt_pwm_set(pwm_dev, PWM_CHANNEL1, period, pulse1); rt_pwm_enable(pwm_dev, PWM_CHANNEL1);
rt_pwm_set(pwm_dev, PWM_CHANNEL2, period, pulse2); rt_pwm_enable(pwm_dev, PWM_CHANNEL2);
return 0; }
MSH_CMD_EXPORT(pwm_demo, pwm demo);
|
测试
逻辑分析仪的 gnd 一定要接,不然数据会不准