53 lines
1.1 KiB
C
53 lines
1.1 KiB
C
//
|
|
// Created by cfif on 16.09.22.
|
|
//
|
|
#include "GpioPin_AC7840x.h"
|
|
|
|
tGpioPin vInitGpioPinPull(
|
|
PORT_Type *port,
|
|
GPIO_Type *gpio,
|
|
uint32_t pinMask,
|
|
port_data_direction_t direction,
|
|
bool reverse,
|
|
port_pull_config_t gpio_pull
|
|
) {
|
|
GPIO_DRV_SetMuxModeSel(port, pinMask, PORT_MUX_AS_GPIO);
|
|
GPIO_DRV_SetPinDirection(gpio, pinMask, direction);
|
|
GPIO_DRV_SetPullSel(port, pinMask, gpio_pull);
|
|
|
|
tGpioPin pin = {
|
|
.port = port,
|
|
.gpio = gpio,
|
|
.pin = pinMask,
|
|
.reverse = reverse
|
|
};
|
|
|
|
return pin;
|
|
}
|
|
|
|
void GpioPinSet(tGpioPin *pin, bool value) {
|
|
if (pin->reverse) {
|
|
value = !value;
|
|
}
|
|
|
|
if (value) {
|
|
GPIO_DRV_WritePin(pin->gpio, pin->pin, 1);
|
|
} else {
|
|
GPIO_DRV_WritePin(pin->gpio, pin->pin, 0);
|
|
}
|
|
}
|
|
|
|
bool GpioPinGet(tGpioPin *pin) {
|
|
bool value;
|
|
if ((GPIO_DRV_ReadPins(pin->gpio) & (1 << pin->pin))) {
|
|
value = true;
|
|
} else {
|
|
value = false;
|
|
}
|
|
if (pin->reverse) {
|
|
value = !value;
|
|
}
|
|
return value;
|
|
}
|
|
|