-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathrp2040_gpio.cc
40 lines (33 loc) · 1009 Bytes
/
rp2040_gpio.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//---------------------------------------------------------------------------
#include "javelin/hal/gpio.h"
#include <hardware/gpio.h>
#include <hardware/pwm.h>
//---------------------------------------------------------------------------
void Gpio::SetInputPin(int pin, Pull pull) {
gpio_init(pin);
gpio_set_dir(pin, GPIO_IN);
switch (pull) {
case Pull::NONE:
break;
case Pull::DOWN:
gpio_pull_down(pin);
break;
case Pull::UP:
gpio_pull_up(pin);
break;
}
}
bool Gpio::GetPin(int pin) { return gpio_get(pin) != 0; }
void Gpio::SetPin(int pin, bool value) {
gpio_init(pin);
gpio_set_dir(pin, GPIO_OUT);
gpio_put(pin, value);
}
void Gpio::SetPinDutyCycle(int pin, int dutyCycle) {
gpio_set_function(pin, GPIO_FUNC_PWM);
const uint32_t slice_num = pwm_gpio_to_slice_num(pin);
pwm_set_wrap(slice_num, 99);
pwm_set_enabled(slice_num, true);
pwm_set_gpio_level(pin, dutyCycle);
}
//---------------------------------------------------------------------------