(十三)树莓派3B+ wiringPi库的使用--软件PWM

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhuming3834/article/details/82662404

《(十一)树莓派3B+ wiringPi库的使用–硬件PWM》介绍的是硬件PWM,其实wiringPi库还提供了软件PWM的方法。
电路图还是和之前的一样,效果也差不多。

代码

#include <wiringPi.h>
#include <softPwm.h>

#define pwm_pin 1    //定义PWM引脚 GPIO.1

int main (void)
{
    wiringPiSetup ();               // wiringPi库初始化
    softPwmCreate (pwm_pin, 0, 100) ;   // 设置GPIO.1为PWM输出    
    int val = 0;
    while(1)
    {
      val ++;
      if(val >= 100){
        val = 0;
      }
      softPwmWrite(pwm_pin,val); // 输出占空比为val/100的pwm波
      delay(3); // 延时3毫秒
  }
  return 0 ;
} 

怎么使用

1.引入头文件

#include <softPwm.h>

2.初始化端口

int softPwmCreate (int pin, int initialValue, int pwmRange) ;

参数pin,树莓派的任何一个GPIO引脚都可以被设置成软件PWM的输出引脚。
参数initialValue,PWM初始值,这值得范围在0~100之间。
参数pwmRange,PWM输出范围,这值得范围在0~100之间。
这里写图片描述
3.设置输出值

void softPwmWrite (int pin, int value) ;

给作为PWM输出的引脚设置输出值,这个值在pwmRange范围之内。
wiringPi库提供的软件PWM就这个两个方法,但是有些是需要注意的。

注意点

这里写图片描述

  • PWM输出的每一个“周期”都需要10毫秒,默认范围值为100,因此,尝试每秒改变PWM值超过100次将是徒劳的。(也就是说软件PWM的固定输出频率是100HZ,这个对于驱动一般的电机是足够了)
    您需要保持您的程序运行,以维护PWM输出!
  • 在软PWM模式下激活的每个引脚使用大约0.5%的CPU。
  • 目前还没有办法禁用软PWM上的一个引脚,而程序在运行中。
  • 您需要保持您的程序运行,以维护PWM输出!

猜你喜欢

转载自blog.csdn.net/zhuming3834/article/details/82662404
今日推荐