Добавлен интерфейс GPIO

This commit is contained in:
cfif 2025-07-14 12:13:45 +03:00
commit dd4d67395d
3 changed files with 104 additions and 0 deletions

35
Inc/GpioPin.h Normal file
View File

@ -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

52
Src/GpioPin.c Normal file
View File

@ -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;
}

17
modular.json Normal file
View File

@ -0,0 +1,17 @@
{
"dep": [
{
"type": "git",
"provider": "HVAC",
"repo": "GpioPinInterface"
}
],
"cmake": {
"inc_dirs": [
"Inc"
],
"srcs": [
"Src/**.c"
]
}
}