diff --git a/AdaptiveBrightnessFirmware/Src/init.c b/AdaptiveBrightnessFirmware/Src/init.c index c71c711..c821afc 100644 --- a/AdaptiveBrightnessFirmware/Src/init.c +++ b/AdaptiveBrightnessFirmware/Src/init.c @@ -141,18 +141,6 @@ void SystemClock_Config(void) /* USER CODE END 4 */ -/** - * @brief This function is executed in case of error occurrence. - * @retval None - */ -void Error_Handler(void) -{ - /* USER CODE BEGIN Error_Handler_Debug */ - /* User can add his own implementation to report the HAL error return state */ - - /* USER CODE END Error_Handler_Debug */ -} - #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number diff --git a/AdaptiveBrightnessFirmware/Src/main.cpp b/AdaptiveBrightnessFirmware/Src/main.cpp index ac3d31b..4fc9fa1 100644 --- a/AdaptiveBrightnessFirmware/Src/main.cpp +++ b/AdaptiveBrightnessFirmware/Src/main.cpp @@ -30,24 +30,36 @@ std::array sampleLightSensors() return adcValues; } +static volatile bool g_error = false; + +extern "C" void Error_Handler(void) +{ + g_error = true; +} + static inline void initializeHardware() { serial_t serial; - init(); - serial.init(); + do { + g_error = false; + init(); + serial.init(); + if(g_error) + HAL_GPIO_WritePin(RED_LED_GPIO_Port, RED_LED_Pin, GPIO_PIN_RESET); + else + HAL_GPIO_WritePin(RED_LED_GPIO_Port, RED_LED_Pin, GPIO_PIN_SET); + } while(g_error); } int main() { initializeHardware(); - HAL_GPIO_WritePin(RED_LED_GPIO_Port, RED_LED_Pin, GPIO_PIN_RESET); + 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_RESET); - HAL_GPIO_WritePin(BLUE_LED_GPIO_Port, BLUE_LED_Pin, GPIO_PIN_RESET); - + HAL_GPIO_WritePin(BLUE_LED_GPIO_Port, BLUE_LED_Pin, GPIO_PIN_SET); 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);