版权声明:本文为博主原创文章,未经博主允许不得转载。 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输出!