用户您好,请详细描述您所遇到的问题:
- 系统软件版本:2.0.0
- 问题涉及的技术领域: 硬件
- 问题描述:通过WiringPi控制GPIO进行闪烁、硬PWM等均无法正常运行
- 复现概率:必现
运行步骤:-
根据WiringPi: 在旭日X3派上移植的 WiringPi 。
问题一:gpio readall显示为X3 SDB而非X3 PI 或 X3 MD
问题二:shell命令无法使用-
①:GPIO测试:LED正极接到物理37引脚(BCM码:26)-
sudo gpio mode 26 out-
sudo gpio write 26 on(LED无反应)
②PWM测试:LED正极接到物理32引脚(BCM码:12)
LED无任何反应(硬件问题已经排除,用app/40pin_samples/simple_pwm.py测试LED可以正常闪烁。就是shell命令的问题)
问题三:C代码硬PWM无法正常运行-
①运行gitee上代码历程:-
编译:/usr/bin/g++ -fdiagnostics-color=always -g ./pwmtest.c -o ./pwmtest -lwiringPi -lpthread可以运行-
②:修改为硬PWM无法运行
#include <stdio.h>#include <wiringPi.h>#define PWM_1 25Uint main (void){ wiringPiSetupGpio () ; pinMode(PWM_1, PWM_OUTPUT); while(1) { for(int bright = 0 ; bright < 1000; bright++) { pwmWrite(PWM_1, bright); delay(1) ; } for(int bright = 1000; bright >= 0; bright--) { pwmWrite(PWM_1, bright); delay(1) ; } } return 0 ;}
编译:/usr/bin/g++ -fdiagnostics-color=always -g ./pwmtest.c -o ./pwmtest -lwiringPi -lpthread
报错:Segmentation fault然后自动退出程序,但是LED却常量且不会发生亮度变化-
③:继续修改硬件PWM代码:-
#include <stdio.h>#include <wiringPi.h>int PWM_1 = 12; // BCM code 12int main (void){ wiringPiSetupGpio(); pinMode(PWM_1, PWM_OUTPUT); pwmSetRange(100); pwmSetClock(75); while(1) { for(int bright = 0 ; bright < 100; bright++) { pwmWrite(PWM_1, bright); delay(2) ; } for(int bright = 100; bright >= 0; bright--) { pwmWrite(PWM_1, bright); delay(2) ; } } return 0 ;}
此处不再使用物理引脚编号,使用的是BCM码编号,故编译时命令取消-g-
/usr/bin/g++ -fdiagnostics-color=always ./pwmtest.c -o ./pwmtest -lwiringPi -lpthread
依然无法正常运行,gdb调试结果为:-
其实屏蔽掉pwmSetRange和SetClock后,gdb调试过程中pwmWrite(PWM_1, bright)也会报错-
此外也有多次重装wiringPi均无果:-
进入WiringPi运行./build uninstall其实卸载的不干净-
我卸载的方法为:-
sudo rm -rf /usr/lib/libwiring*
sudo rm -rf /usr/local/include/wiring*
sudo unlink /usr/local/bin/gpio
sudo ldconfig