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

Posted 小猿猪哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(十三)树莓派3B+ wiringPi库的使用--软件PWM相关的知识,希望对你有一定的参考价值。

《(十一)树莓派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输出!

以上是关于(十三)树莓派3B+ wiringPi库的使用--软件PWM的主要内容,如果未能解决你的问题,请参考以下文章

wiringPi库的pwm配置及使用说明

带wiringPi库的交叉编译

树莓派3b+ 舵机驱动开发

树莓派3b的gpio芯片是哪个?

树莓派交叉编译(PS交叉编译链下载安装带WiringPi库交叉编译)

树莓派3b 串口通信初次尝试