GpioPin_AutoChips_AC7840x/Src/GpioPin.c

53 lines
1.1 KiB
C

//
// Created by cfif on 16.09.22.
//
#include "GpioPin.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;
}