树莓派 3 PWM LED 脉冲

Posted

技术标签:

【中文标题】树莓派 3 PWM LED 脉冲【英文标题】:Raspberry Pi 3 PWM Led Pulse 【发布时间】:2019-09-10 17:36:10 【问题描述】:

我想使用 bcm2835.h 和纯 C 语言通过 PWM 控制 LED 二极管。我的代码不起作用。我错过了什么?

我尝试了“gpio”控制台命令,它工作正常,所以我知道 led 连接到正确的端口。我可以使用控制台命令打开它:

gpio pwm 1 1024

我的代码:

#include <bcm2835.h>
#include <stdio.h>

// PWM output on RPi Plug P1 pin 12 (which is GPIO pin 18) in alt fun 5.
// Note that this is the _only_ PWM pin available on the RPi IO headers
#define PIN RPI_GPIO_P1_12

// and it is controlled by PWM channel 0
#define PWM_CHANNEL 0

// This controls the max range of the PWM signal
#define RANGE 1024


int main(int argc, char **argv)

    if (!bcm2835_init())
    
        return 1;
    

    // Set the output pin to Alt Fun 5, to allow PWM channel 0 to be output there
    bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_ALT5);

    // Clock divider is set to 16.
    // With a divider of 16 and a RANGE of 1024, in MARKSPACE mode,
    // the pulse repetition frequency will be
    // 1.2MHz/1024 = 1171.875Hz, suitable for driving a DC motor with PWM
    bcm2835_pwm_set_clock(BCM2835_PWM_CLOCK_DIVIDER_16);

    bcm2835_pwm_set_mode(PWM_CHANNEL, 1, 1);

    bcm2835_pwm_set_range(PWM_CHANNEL, RANGE);

    while(1)
    
        bcm2835_pwm_set_data(PWM_CHANNEL, 1024);
        bcm2835_delay(10);
    


    bcm2835_close();
    return 0;

我希望我的 LED 会亮起。

【问题讨论】:

这是什么操作系统? Linux 树莓派 4.19.66 【参考方案1】:

这很愚蠢,但是在检查了数学、代码和接线后,我发现应用程序需要以 root 权限运行才能对引脚进行板载访问。它工作正常。主题可以关闭。

【讨论】:

以上是关于树莓派 3 PWM LED 脉冲的主要内容,如果未能解决你的问题,请参考以下文章

Windows 10 IoT Core用PWM控制器控制树莓派LED灯亮度

【原创】树莓派3B开发Go语言(四)-自写库实现pwm输出

云中树莓派:利用声音传感器控制Led灯

(十三)树莓派3B+ wiringPi库的使用--软件PWM

树莓派——步进电机+驱动器 篇

使用树莓派连接LED灯