работает слейв и мастер

This commit is contained in:
2026-05-28 03:20:13 +03:00
commit cbb571f124
191 changed files with 55316 additions and 0 deletions

100
App/hardware.c Normal file
View File

@@ -0,0 +1,100 @@
#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;
}