树莓派(Linux系统)gpio 基于wiringPi输出pwm信号

本文介绍了树莓派的gpio引脚输出pwm波用以控制led灯亮度的方法,使用的是基于树莓派官方系统中自带的wiringPi库函数实现的。

树莓派中输出pwm波有两种方式:一种是硬件pwm波,一种是软件模拟的pwm波。软件模拟的pwm可以自定义pwm的周期。

 

1.wiringPi函数接口模拟pwm

1.1代码源码

#include <stdio.h>
#include <wiringPi.h>
#include <softPwm.h>
#include <unistd.h>
#include <stdlib.h>

#define BACK_LIGHT (17)

int main(int argc, char *argv[])
{
	if(-1 == wiringPiSetup()){
		printf("wirong pi init fail\n");
		return -1;
	}

	int i=0;
	
	softPwmCreate(BACK_LIGHT, 0, 100);// 生成一个初始值为0,周期为10ms的pwm控制引脚17(周期=0.1*第三个参数)
	if(1 == argc){
		for(i = 0; i < 100; i++)
		{
			
			softPwmWrite(BACK_LIGHT, i);
			//usleep(5000);
			sleep(1);
		}
	}
	else{
		i = atoi(argv[1]);
		printf("i = %d\n", i);
		softPwmWrite(BACK_LIGHT, i);
		sleep(4);
		printf("end\n");
	}
	return 0;
}

1.2代码的编译方式

sudo gcc gpio_pwm.c  -lpthread -lwiringPi

1.3执行

sudo ./a.out

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章