Initial commit
This commit is contained in:
34
Core/Src/driverHWPowerState.c
Normal file
34
Core/Src/driverHWPowerState.c
Normal file
@@ -0,0 +1,34 @@
|
||||
#include "driverHWPowerState.h"
|
||||
|
||||
const PowerStatePortStruct driverHWPorts[NoOfPowersSTATs] = // Holds all status configuration data
|
||||
{
|
||||
{GPIOB,0,GPIO_PIN_5,GPIO_MODE_OUTPUT_PP,GPIO_NOPULL}, // P_STAT_POWER_ENABLE
|
||||
{GPIOB,0,GPIO_PIN_4,GPIO_MODE_INPUT,GPIO_PULLUP}, // P_STAT_BUTTON_INPUT
|
||||
{GPIOE,0,GPIO_PIN_9,GPIO_MODE_INPUT,GPIO_PULLDOWN} // P_STAT_CHARGE_DETECT
|
||||
};
|
||||
|
||||
void driverHWPowerStateInit(void) {
|
||||
GPIO_InitTypeDef PowerStatePortHolder;
|
||||
uint8_t STATPointer;
|
||||
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||
|
||||
for(STATPointer = 0; STATPointer < NoOfPowersSTATs; STATPointer++) {
|
||||
//RCC->AHBENR |= driverHWPorts[STATPointer].ClkRegister; // Enable clock de desired port
|
||||
PowerStatePortHolder.Mode = driverHWPorts[STATPointer].Mode; // Push pull output
|
||||
PowerStatePortHolder.Pin = driverHWPorts[STATPointer].Pin; // Points to status pin
|
||||
PowerStatePortHolder.Pull = driverHWPorts[STATPointer].Pull; // No pullup
|
||||
PowerStatePortHolder.Speed = GPIO_SPEED_HIGH; // GPIO clock speed
|
||||
HAL_GPIO_Init(driverHWPorts[STATPointer].Port,&PowerStatePortHolder); // Perform the IO init
|
||||
};
|
||||
};
|
||||
|
||||
void driverHWPowerStateSetOutput(PowerStateIDTypedef outputPort, PowerStateStateTypedef newState) {
|
||||
HAL_GPIO_WritePin(driverHWPorts[outputPort].Port,driverHWPorts[outputPort].Pin,(GPIO_PinState)newState); // Set desired pin to desired state
|
||||
};
|
||||
|
||||
bool driverHWPowerStateReadInput(PowerStateIDTypedef inputPort) {
|
||||
return (bool) !HAL_GPIO_ReadPin(driverHWPorts[inputPort].Port,driverHWPorts[inputPort].Pin);
|
||||
};
|
||||
Reference in New Issue
Block a user