AdaptiveBrightness/firmware/Src/main.cpp

59 lines
1.4 KiB
C++

#include "init.h"
#include "iwdg.h"
#include "terminal.hpp"
#include "uart.hpp"
using serial_t = uart::Vcp<>;
using terminal_t = Terminal<serial_t>;
static volatile bool g_error = false;
extern "C" void Error_Handler(void)
{
g_error = true;
}
static inline void initializeHardware()
{
const auto resetByWatchdog = (__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST)) ? true : false;
terminal_t terminal;
do {
g_error = false;
init();
terminal.init();
HAL_GPIO_WritePin(RED_LED_GPIO_Port, RED_LED_Pin, g_error ? GPIO_PIN_RESET : GPIO_PIN_SET);
} while(g_error);
if(resetByWatchdog) {
HAL_GPIO_WritePin(GREEN_LED_GPIO_Port, GREEN_LED_Pin, GPIO_PIN_SET);
}
else {
HAL_GPIO_WritePin(GREEN_LED_GPIO_Port, GREEN_LED_Pin, GPIO_PIN_RESET);
}
HAL_GPIO_WritePin(RED_LED_GPIO_Port, RED_LED_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(BLUE_LED_GPIO_Port, BLUE_LED_Pin, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(RED_LED_GPIO_Port, RED_LED_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(GREEN_LED_GPIO_Port, GREEN_LED_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(BLUE_LED_GPIO_Port, BLUE_LED_Pin, GPIO_PIN_SET);
}
int main()
{
initializeHardware();
MX_IWDG_Init();
terminal_t terminal;
while(true) {
terminal.callback();
HAL_IWDG_Refresh(&hiwdg);
}
return 0;
}