Добавлен интерфейс GPIO
This commit is contained in:
commit
dd4d67395d
|
|
@ -0,0 +1,35 @@
|
||||||
|
//
|
||||||
|
// Created by cfif on 16.09.22.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef GPIOPIN_GPIOPIN_H
|
||||||
|
#define GPIOPIN_GPIOPIN_H
|
||||||
|
|
||||||
|
#include "GpioPinInterface.h"
|
||||||
|
#include CMSIS_device_header
|
||||||
|
#include "gpio_drv.h"
|
||||||
|
|
||||||
|
#define GPIO_PIN_NOREVERSE false
|
||||||
|
#define GPIO_PIN_REVERSE true
|
||||||
|
|
||||||
|
tGpioPin vInitGpioPinPull(
|
||||||
|
PORT_Type *port,
|
||||||
|
GPIO_Type *gpio,
|
||||||
|
uint32_t pinMask,
|
||||||
|
port_data_direction_t direction,
|
||||||
|
bool reverse,
|
||||||
|
port_pull_config_t gpio_pull
|
||||||
|
);
|
||||||
|
|
||||||
|
#define InitGpioPin(PORT, GPIO, MASK, DIRECTION, REVERSE) \
|
||||||
|
vInitGpioPinPull(PORT, GPIO, MASK, DIRECTION, REVERSE, PORT_INTERNAL_PULL_NOT_ENABLED)
|
||||||
|
|
||||||
|
#define InitGpioPinPull(PORT, MASK, DIRECTION, REVERSE, PULL) \
|
||||||
|
vInitGpioPinPull(PORT, MASK, DIRECTION, REVERSE, PULL)
|
||||||
|
|
||||||
|
|
||||||
|
void GpioPinSet(tGpioPin *pin, bool value);
|
||||||
|
|
||||||
|
bool GpioPinGet(tGpioPin *pin);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
//
|
||||||
|
// 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"dep": [
|
||||||
|
{
|
||||||
|
"type": "git",
|
||||||
|
"provider": "HVAC",
|
||||||
|
"repo": "GpioPinInterface"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"cmake": {
|
||||||
|
"inc_dirs": [
|
||||||
|
"Inc"
|
||||||
|
],
|
||||||
|
"srcs": [
|
||||||
|
"Src/**.c"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue