35 lines
1022 B
C
35 lines
1022 B
C
/**
|
|
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
// Output PWM signals on pins 0 and 1
|
|
|
|
#include "pico/stdlib.h"
|
|
#include "hardware/pwm.h"
|
|
|
|
int main() {
|
|
/// \tag::setup_pwm[]
|
|
|
|
// Tell GPIO 0 and 1 they are allocated to the PWM
|
|
gpio_set_function(0, GPIO_FUNC_PWM);
|
|
gpio_set_function(1, GPIO_FUNC_PWM);
|
|
|
|
// Find out which PWM slice is connected to GPIO 0 (it's slice 0)
|
|
uint slice_num = pwm_gpio_to_slice_num(0);
|
|
|
|
// Set period of 4 cycles (0 to 3 inclusive)
|
|
pwm_set_wrap(slice_num, 3);
|
|
// Set channel A output high for one cycle before dropping
|
|
pwm_set_chan_level(slice_num, PWM_CHAN_A, 1);
|
|
// Set initial B output high for three cycles before dropping
|
|
pwm_set_chan_level(slice_num, PWM_CHAN_B, 3);
|
|
// Set the PWM running
|
|
pwm_set_enabled(slice_num, true);
|
|
/// \end::setup_pwm[]
|
|
|
|
// Note we could also use pwm_set_gpio_level(gpio, x) which looks up the
|
|
// correct slice and channel for a given GPIO.
|
|
}
|