簡體   English   中英

如何使用帶有 C 的 WiringPi 在 Raspberry Pi 上生成 PWM?

[英]How can PWM be generated on the Raspberry Pi using wiringPi with C?

我正在嘗試學習 C 並希望能夠在 Raspberry Pi 的 GPIO 引腳上生成 PWM 信號。 但是,我遵循的大多數教程都沒有任何效果。 這是我當前使用的代碼:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <wiringPi.h>
#include <softPwm.h>


#define RED 20
#define GREEN 21

// pwm
int pwmValue = 1023;
int pwmValueInit = 0;

int main (void)
{
 
    if (wiringPiSetup() == -1)
    return -1;

    if (wiringPiSetupSys() == -1)
        return -1;
    
    pinMode(RED, OUTPUT);
    pinMode(GREEN, OUTPUT);
    digitalWrite(RED, LOW); // at start turn off the GPIO
    digitalWrite(GREEN, LOW); // at start turn off the GPIO
    pinMode(RED, PWM_OUTPUT);
    pinMode(GREEN, PWM_OUTPUT);
    
    softPwmCreate(RED, pwmValueInit, pwmValue);
    softPwmCreate(GREEN, pwmValueInit, pwmValue);

    int duty;
    printf("Enter the desired duty cycle:\n");
    scanf("%f", duty);
    
    softPwmWrite(RED, duty);
    softPwmWrite(GREEN, duty);
    
    
}

我不太確定問題是什么,因為程序編譯時沒有錯誤。 但是,當我運行程序時,它會返回分段錯誤,但我不確定是什么原因造成的。

段錯誤可能與 WiringPi 無關。 您的scanf()調用是錯誤的 - 您必須傳遞目標變量的地址,而不是變量本身。 此外,如果您想使用int ,請使用%d格式說明符。

scanf("%d", &duty);

如果您的 LED 仍未點亮,則值得逐步驗證您的設置是否正確。 你能閃爍 LED(沒有 PWM)嗎? 這將驗證您是否有正確的引腳和接線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM