代码拉取完成,页面将自动刷新
同步操作将从 异想天开/openwrt_mt7688_ctest 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/*---------------------------------------------------------------
use MRAA c lib to set and control PWM
compile with lib: gcc -L./ -lmraa pwmtest.c
------------------------------------------------------------------*/
#include "./include/mraa.h"
#include <stdio.h>
#include <stdlib.h>
typedef enum { // pin number 18,19,20,21
GPIO18=18,
GPIO19=19,
GPIO20=20,
GPIO21=21} GPIO_pin;
int main(int argc,char* argv[])
{
int perus=1000;// period us
float pers; // period s
float tmp_duty=0;
float duty=0.5; // duty percentage
GPIO_pin pin=20;
int temp;
int Max_Period_Us,Min_Period_Us;
printf("Please enter:\n GPIO number----(18,19,20,21 defaul=20)\
\n period----(us, default=1000us)\n Duty----(0~1, default=0.5)!\n");
printf("Periods 1us ~ 26999us \n");
if(argc>1)
{
temp=atoi(argv[1]);
if(temp<18 || temp>21)
printf("GPIO number error!");
else
pin=temp;
}
if(argc>2)
perus=atoi(argv[2]);
if(argc>3)
tmp_duty=atof(argv[3]);
if(tmp_duty>=0 && tmp_duty<=1)
duty=tmp_duty;
mraa_result_t res;
mraa_pwm_context pwm;
pwm=mraa_pwm_init(pin);
mraa_pwm_owner(pwm,1);
mraa_pwm_enable(pwm,1);
mraa_pwm_write(pwm,0); //---set duty to 0 first
if(perus<=1000)
res=mraa_pwm_period_us(pwm,perus); //-- us MAX 26214us
if(perus>=20000)
{
pers=perus/1000000.0;
printf("pers=%9.6f\n",pers);
res=mraa_pwm_period(pwm,pers); //-- s
}
if(perus>1000 && perus<20000)
res=mraa_pwm_period_ms(pwm,perus/1000); //-- ms MAX 26ms
if(res!=0)
printf("Period set fail!\n");
else
printf("Period:%dus set succeed!\n",perus);
res=mraa_pwm_write(pwm,duty);
if(res!=0)
printf("Duty set fail!\n");
else
printf("Duty:%4.3f set succeedy!\n",duty);
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。