地平线旭日x3派40pin引脚控制,点亮小灯,控制舵机
- 引脚对照表
- 点亮RGB小灯
- 安装旭日X3派WiringPi
- 使用WiringPi点亮RGB小灯
- 使用软件PWM功能
官方用户手册中只有python控制教程,没有c语言控制教程。且官方的教程中并没有软件pwm功能。本教程在开发版上安装WiringPi,使用WiringPi来控制GPIO引脚,并使用软件模拟PWM。
引脚对照表

 
点亮RGB小灯
根据官方的python用户手册可以点亮小灯。建议参考。注意在python中,使用的包为Hobot.GPIO,在这个包中不支持软件模拟PWM功能(官方手册中如是说)
 将RGB小灯的G口使用杜邦线连接到开发版的29号引脚,并接GND。然后运行程序,灯将绿色闪烁。
#!/usr/bin/env python3
import Hobot.GPIO as GPIO
import time
# 定义使用的GPIO通道为29
blue_pin = 29 # BOARD 编码 29
def main():
    # 设置管脚编码模式为硬件编码 BOARD
    GPIO.setmode(GPIO.BOARD)
    # 设置为输出模式,并且初始化为低电平
    GPIO.setup(blue_pin, GPIO.OUT, initial=GPIO.LOW)
    print("Starting demo now! Press CTRL+C to exit")
    try:
        while True:
            GPIO.output(blue_pin, GPIO.HIGH)
            time.sleep(1)
            GPIO.output(blue_pin, GPIO.LOW)
            time.sleep(1)
    finally:
        GPIO.cleanup()
if __name__=='__main__':
    main()
安装旭日X3派WiringPi
参考官方教程可顺利安装。注意在WiringPi中,默认使用BCM引脚编号。在上图中,BCM引脚为5是,对应GPIO119,BOARD物理编号为29 。
使用WiringPi点亮RGB小灯
编译下面的c代码,然后使用sudo权限运行可执行程序。灯将绿色闪烁。
 编译命令参考
 /usr/bin/g++ -fdiagnostics-color=always -g /home/sunrise/Documents/step_motor/cycle50.cpp -o /home/sunrise/Documents/step_motor/cycle50 -lwiringPi -lpthread
#include <wiringPi.h>
#include <softPwm.h>
int green_pin = 5;
int main(void)
{
	wiringPiSetup();
    pinMode(green_pin, OUTPUT);
	while(1)
	{
		digitalWrite(green_pin,HIGH);
		delay(1000);
		digitalWrite(green_pin,LOW);
		delay(1000);
	}
	return 0;
}
使用软件PWM功能
将伺服电机SG90信号线连接开发版36引脚,也就是BCM编码下16引脚。并连接地线和电源线。编译下面代码。sudo执行编译后文件。电机将正转180度后反转180度。
/usr/bin/g++ -fdiagnostics-color=always -g /home/sunrise/Documents/step_motor/cycle50.cpp -o /home/sunrise/Documents/step_motor/cycle50 -lwiringPi -lpthread
#include <wiringPi.h>
#include <softPwm.h>
#include <stdio.h>
#define pwm_pin 16
int main(void)
{
    wiringPiSetup();                 // 初始化wiringPi库
    softPwmCreate(pwm_pin, 0, 100);  // 创建软件PWM对象,设置占空比范围为0-100
    int val = 5;
    while (1)
    {
        // 切换占空比值
        if (val == 25)
            val = 5;
        else
            val = 25;
        softPwmWrite(pwm_pin, val);  // 设置PWM引脚的占空比
        delay(400);                  // 延迟一段时间
    }
    return 0;
}












![线程栈溢出异常,程序崩溃在汇编代码test dword ptr [eax],eax上的问题排查](https://img-blog.csdnimg.cn/936e39ca9b404af99a7166a621d44fe7.png)






