TestSubmodule/LOCAL/Src/Gpios.c

95 lines
3.9 KiB
C

//
// Created by villuton on 25.08.2025.
//
#include "Gpios.h"
#include "GpioPin.h"
#define GCHRG_PIN_MODE GPIO_MODE_OUTPUT
#define GCHRG_PIN_REV GPIO_PIN_NOREVERSE
/**
* Инициализация пинов включения микросхем зарядника
* @param env
*/
static void gpios_chrg(tChrgEnPins *env) {
///GPIOB
env->tab[CHRG_Ch1] = InitGpioPin(GPIOB, GPIO_PINS_2, GCHRG_PIN_MODE, GCHRG_PIN_REV);
env->tab[CHRG_Ch2] = InitGpioPin(GPIOB, GPIO_PINS_3, GCHRG_PIN_MODE, GCHRG_PIN_REV);
env->tab[CHRG_Ch3] = InitGpioPin(GPIOB, GPIO_PINS_4, GCHRG_PIN_MODE, GCHRG_PIN_REV);
env->tab[CHRG_Ch4] = InitGpioPin(GPIOB, GPIO_PINS_5, GCHRG_PIN_MODE, GCHRG_PIN_REV);
env->tab[CHRG_Ch5] = InitGpioPin(GPIOB, GPIO_PINS_6, GCHRG_PIN_MODE, GCHRG_PIN_REV);
env->tab[CHRG_Ch6] = InitGpioPin(GPIOB, GPIO_PINS_7, GCHRG_PIN_MODE, GCHRG_PIN_REV);
env->tab[CHRG_Ch7] = InitGpioPin(GPIOB, GPIO_PINS_8, GCHRG_PIN_MODE, GCHRG_PIN_REV);
env->tab[CHRG_Ch8] = InitGpioPin(GPIOB, GPIO_PINS_9, GCHRG_PIN_MODE, GCHRG_PIN_REV);
env->tab[CHRG_Ch9] = InitGpioPin(GPIOB, GPIO_PINS_10, GCHRG_PIN_MODE, GCHRG_PIN_REV);
env->tab[CHRG_Ch10] = InitGpioPin(GPIOB, GPIO_PINS_11, GCHRG_PIN_MODE, GCHRG_PIN_REV);
}
#define GBAT_PIN_MODE GPIO_MODE_OUTPUT
#define GBAT_PIN_REV GPIO_PIN_NOREVERSE
/**
* Инициализация пинов включения батареи в цепь
* @param env
*/
static void gpios_bat(tBatEnPins *env) {
///GPIOB
env->tab[CHRG_Ch1] = InitGpioPin(GPIOB, GPIO_PINS_12, GBAT_PIN_MODE, GBAT_PIN_REV);
env->tab[CHRG_Ch2] = InitGpioPin(GPIOB, GPIO_PINS_13, GBAT_PIN_MODE, GBAT_PIN_REV);
env->tab[CHRG_Ch3] = InitGpioPin(GPIOB, GPIO_PINS_14, GBAT_PIN_MODE, GBAT_PIN_REV);
env->tab[CHRG_Ch4] = InitGpioPin(GPIOB, GPIO_PINS_15, GBAT_PIN_MODE, GBAT_PIN_REV);
///GPIOC
env->tab[CHRG_Ch5] = InitGpioPin(GPIOC, GPIO_PINS_0, GBAT_PIN_MODE, GBAT_PIN_REV);
env->tab[CHRG_Ch6] = InitGpioPin(GPIOC, GPIO_PINS_1, GBAT_PIN_MODE, GBAT_PIN_REV);
env->tab[CHRG_Ch7] = InitGpioPin(GPIOC, GPIO_PINS_2, GBAT_PIN_MODE, GBAT_PIN_REV);
env->tab[CHRG_Ch8] = InitGpioPin(GPIOC, GPIO_PINS_3, GBAT_PIN_MODE, GBAT_PIN_REV);
env->tab[CHRG_Ch9] = InitGpioPin(GPIOC, GPIO_PINS_4, GBAT_PIN_MODE, GBAT_PIN_REV);
env->tab[CHRG_Ch10] = InitGpioPin(GPIOC, GPIO_PINS_5, GBAT_PIN_MODE, GBAT_PIN_REV);
}
#define GLED_PIN_MODE GPIO_MODE_OUTPUT
#define GLED_PIN_REV GPIO_PIN_NOREVERSE
/**
* Инициализация светодиодов
* @param env
*/
static void gpios_led(tLedPins *env) {
///GPIOC
env->tab[CHRG_Ch1] = InitGpioPin(GPIOC, GPIO_PINS_6, GLED_PIN_MODE, GLED_PIN_REV);
env->tab[CHRG_Ch2] = InitGpioPin(GPIOC, GPIO_PINS_7, GLED_PIN_MODE, GLED_PIN_REV);
env->tab[CHRG_Ch3] = InitGpioPin(GPIOC, GPIO_PINS_8, GLED_PIN_MODE, GLED_PIN_REV);
env->tab[CHRG_Ch4] = InitGpioPin(GPIOC, GPIO_PINS_9, GLED_PIN_MODE, GLED_PIN_REV);
env->tab[CHRG_Ch5] = InitGpioPin(GPIOC, GPIO_PINS_10, GLED_PIN_MODE, GLED_PIN_REV);
env->tab[CHRG_Ch6] = InitGpioPin(GPIOC, GPIO_PINS_11, GLED_PIN_MODE, GLED_PIN_REV);
env->tab[CHRG_Ch7] = InitGpioPin(GPIOC, GPIO_PINS_12, GLED_PIN_MODE, GLED_PIN_REV);
env->tab[CHRG_Ch8] = InitGpioPin(GPIOC, GPIO_PINS_13, GLED_PIN_MODE, GLED_PIN_REV);
///GPIOA
env->tab[CHRG_Ch9] = InitGpioPin(GPIOA, GPIO_PINS_11, GLED_PIN_MODE, GLED_PIN_REV);
env->tab[CHRG_Ch10] = InitGpioPin(GPIOA, GPIO_PINS_12, GLED_PIN_MODE, GLED_PIN_REV);
}
#define GRE_DE_PIN_MODE GPIO_MODE_OUTPUT
#define GRE_DE_PIN_REV GPIO_PIN_NOREVERSE
/**
* Инициализация пина RE/DE RS485
* @param env
*/
static void gpios_rs485(tRS485DirectionPins *env) {
env->reDePin = InitGpioPin(GPIOA, GPIO_PINS_8, GRE_DE_PIN_MODE, GRE_DE_PIN_REV);
}
/**
* Инициализация GPIOS
* @param *env tGpios
*/
void Gpios_Init(tGpios *env) {
gpios_chrg(&env->chrgEnPins);
gpios_bat(&env->batEnPins);
gpios_led(&env->ledPins);
gpios_rs485(&env->directionPins);
}