101 lines
2.4 KiB
C
101 lines
2.4 KiB
C
#include "hardware.h"
|
|
#include "app_config.h"
|
|
#include "main.h"
|
|
#include "stm32wbxx_nucleo.h"
|
|
|
|
/*
|
|
* Markdown note:
|
|
* - This file is the only place that should know real GPIO/ADC pins.
|
|
* - Replace the weak placeholder code with HAL_GPIO_ReadPin() and HAL_ADC calls
|
|
* after STM32CubeWB/CubeMX generates the board initialization.
|
|
*/
|
|
|
|
void Hardware_Init(void)
|
|
{
|
|
GPIO_InitTypeDef gpio = {0};
|
|
|
|
__HAL_RCC_GPIOB_CLK_ENABLE();
|
|
__HAL_RCC_GPIOE_CLK_ENABLE();
|
|
|
|
#if (APP_ROLE_DETECT_ENABLED != 0U)
|
|
gpio.Pin = APP_ROLE_DETECT_GPIO_PIN;
|
|
gpio.Mode = GPIO_MODE_INPUT;
|
|
gpio.Pull = APP_ROLE_DETECT_PULL;
|
|
gpio.Speed = GPIO_SPEED_FREQ_LOW;
|
|
HAL_GPIO_Init(APP_ROLE_DETECT_GPIO_PORT, &gpio);
|
|
#endif
|
|
|
|
gpio.Pin = APP_BUTTON1_GPIO_PIN | APP_BUTTON2_GPIO_PIN | APP_BUTTON3_GPIO_PIN;
|
|
gpio.Mode = GPIO_MODE_INPUT;
|
|
gpio.Pull = (APP_BUTTON_ACTIVE_LEVEL == 0U) ? GPIO_PULLUP : GPIO_PULLDOWN;
|
|
gpio.Speed = GPIO_SPEED_FREQ_LOW;
|
|
HAL_GPIO_Init(APP_BUTTON_GPIO_PORT, &gpio);
|
|
|
|
gpio.Pin = APP_ROLE_LED_GPIO_PIN;
|
|
gpio.Mode = GPIO_MODE_OUTPUT_PP;
|
|
gpio.Pull = GPIO_NOPULL;
|
|
gpio.Speed = GPIO_SPEED_FREQ_LOW;
|
|
HAL_GPIO_Init(APP_ROLE_LED_GPIO_PORT, &gpio);
|
|
Hardware_SetRoleLed(false);
|
|
}
|
|
|
|
void Hardware_Process(void)
|
|
{
|
|
}
|
|
|
|
uint32_t Hardware_GetTickMs(void)
|
|
{
|
|
return HAL_GetTick();
|
|
}
|
|
|
|
|
|
bool Hardware_ReadRoleSwitchIsMaster(void)
|
|
{
|
|
#if (APP_ROLE_DETECT_ENABLED != 0U)
|
|
return (HAL_GPIO_ReadPin(APP_ROLE_DETECT_GPIO_PORT, APP_ROLE_DETECT_GPIO_PIN) ==
|
|
APP_ROLE_DETECT_MASTER_LEVEL);
|
|
#else
|
|
return (APP_ROLE_DEFAULT == APP_ROLE_MASTER);
|
|
#endif
|
|
}
|
|
|
|
void Hardware_SetRoleLed(bool on)
|
|
{
|
|
const GPIO_PinState active = APP_ROLE_LED_ACTIVE_LEVEL;
|
|
const GPIO_PinState inactive = (active == GPIO_PIN_SET) ? GPIO_PIN_RESET : GPIO_PIN_SET;
|
|
|
|
HAL_GPIO_WritePin(APP_ROLE_LED_GPIO_PORT,
|
|
APP_ROLE_LED_GPIO_PIN,
|
|
on ? active : inactive);
|
|
}
|
|
|
|
bool Hardware_ReadButton(uint8_t index)
|
|
{
|
|
uint16_t pin;
|
|
|
|
switch (index)
|
|
{
|
|
case 0U:
|
|
pin = APP_BUTTON1_GPIO_PIN;
|
|
break;
|
|
|
|
case 1U:
|
|
pin = APP_BUTTON2_GPIO_PIN;
|
|
break;
|
|
|
|
case 2U:
|
|
pin = APP_BUTTON3_GPIO_PIN;
|
|
break;
|
|
|
|
default:
|
|
return false;
|
|
}
|
|
|
|
return (HAL_GPIO_ReadPin(APP_BUTTON_GPIO_PORT, pin) == APP_BUTTON_ACTIVE_LEVEL);
|
|
}
|
|
|
|
uint16_t Hardware_ReadAnalogRaw(void)
|
|
{
|
|
return 0U;
|
|
}
|