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

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

树莓派PWM引脚

关于树莓派的引脚图可以看《(五)树莓派3B+ wiringPi库的使用–点亮LED》。我的是树莓派3B+,排针的第12引脚也就是GPIO.1就是PWM输出的引脚。
在库rpio中介绍了树莓派的PWM引脚

  • 26-pin models: pin 12
  • 40-pin models: pins 12, 32, 33, 35

那么我的树莓派3B+的第12,322,33,35引脚都可以输出PWM。
当然如果采用软件PWM,那么每个GPIO引脚都可以当做PWM输出引脚使用。

什么是PWM

什么是PWM,我觉得可以看看百度百科的解释:PWM–百度百科

PWM占空比

pwm的占空比,就是指高电平保持的时间,与该pwm时钟周期时间之比。
这里写图片描述

代码实现

#include <wiringPi.h>
#define pwm_pin 1    //定义PWM引脚 GPIO.1
int main (void)
{
    wiringPiSetup ();               // wiringPi库初始化
    pinMode (pwm_pin, PWM_OUTPUT);   // 设置GPIO.1为PWM输出    
    int val = 0;
    while(1)
    {
      val ++;
      if(val >= 1024){
        val = 0;
      }
      pwmWrite(pwm_pin,val); // 输出占空比为val/1024的pwm波
      delay(10); // 延时3毫秒
  }
  return 0 ;
} 

PWM其他函数

  1. 设置PWM模式:void pwmSetMode (int mode),树莓派的PWM有两种工作模式,
#define PWM_MODE_MS     0   // 标记和空格
#define PWM_MODE_BAL    1   // 平衡   默认是这个模式
  1. 设置PWM发生器范围void pwmSetRange (unsigned int range),默认是1024,这也是为什么上面的代码中的最大值是2014了。
  2. 设置分频器分频void pwmSetClock (int divisor),默认是32分频,也就是19.2/32 = 600KHZ,至于这里为什么是19.2,输出是的频率是否为600KHZ,还需要有示波器的哥哥器实践一下。博通CPU手册写的是100MHZ.这里写图片描述
    这写在void pinMode (int pin, int mode)函数内就设置好了的。
    这里写图片描述

实验电路图

这里写图片描述
排针的第12引脚也就是GPIO.1是其中的一个PWM输出引脚,接LED的正极,LED的负极直接接电源负极。

效果图

这里写图片描述
效果不是很明显,CSDN图片限制,只能是2M以内,不能上传视频,将就一下。

猜你喜欢

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