/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.h * @brief : Header for main.c file. * This file contains the common defines of the application. ****************************************************************************** * @attention * *

© Copyright (c) 2020 STMicroelectronics. * All rights reserved.

* * This software component is licensed by ST under BSD 3-Clause license, * the "License"; You may not use this file except in compliance with the * License. You may obtain a copy of the License at: * opensource.org/licenses/BSD-3-Clause * ****************************************************************************** */ /* USER CODE END Header */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __MAIN_H #define __MAIN_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "stm32h7xx_hal.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Exported types ------------------------------------------------------------*/ /* USER CODE BEGIN ET */ typedef enum { BSOD_ABORT, BSOD_HARDFAULT, BSOD_MEMFAULT, BSOD_BUSFAULT, BSOD_USAGEFAULT, BSOD_WATCHDOG, BSOD_OTHER, BSOD_COUNT, } BSOD_t; /* USER CODE END ET */ /* Exported constants --------------------------------------------------------*/ /* USER CODE BEGIN EC */ // hacky extern RTC_HandleTypeDef hrtc; /* USER CODE END EC */ /* Exported macro ------------------------------------------------------------*/ /* USER CODE BEGIN EM */ // #define PROFILING_ENABLED #ifdef PROFILING_ENABLED #define PROFILING_INIT(_t_name) \ RTC_TimeTypeDef _t_name##_t0; \ RTC_TimeTypeDef _t_name##_t1; #define PROFILING_MEASURE(_t) \ do { \ RTC_DateTypeDef _sDate; \ uint32_t Format = RTC_FORMAT_BIN; \ HAL_StatusTypeDef ret = HAL_RTC_GetTime(&hrtc, &_t, Format); \ HAL_RTC_GetDate(&hrtc, &_sDate, Format); \ } while (0) #define PROFILING_START(_t_name) PROFILING_MEASURE(_t_name##_t0) #define PROFILING_END(_t_name) PROFILING_MEASURE(_t_name##_t1) #define PROFILING_DIFF(_t_name) \ (\ (((_t_name##_t1).SecondFraction - (_t_name##_t1).SubSeconds) - ((_t_name##_t0).SecondFraction - (_t_name##_t0).SubSeconds)) \ + \ (((_t_name##_t1).Seconds - (_t_name##_t0).Seconds)) \ ) #else #define PROFILING_INIT(_t_name) #define PROFILING_MEASURE(_t) #define PROFILING_START(_t_name) #define PROFILING_END(_t_name) #define PROFILING_DIFF(_t_name) #endif /* USER CODE END EM */ /* Exported functions prototypes ---------------------------------------------*/ void Error_Handler(void); void BSOD(BSOD_t fault, void *pc, void *lr) __attribute__((noreturn)); void store_erase(const uint8_t *flash_ptr, uint32_t size); void store_save(const uint8_t *flash_ptr, const uint8_t *data, size_t size); void boot_magic_set(uint32_t magic); void uptime_inc(void); uint32_t uptime_get(void); /* USER CODE BEGIN EFP */ void GW_EnterDeepSleep(void); uint32_t GW_GetBootButtons(void); void wdog_refresh(void); /* USER CODE END EFP */ /* Private defines -----------------------------------------------------------*/ #define GPIO_Speaker_enable_Pin GPIO_PIN_3 #define GPIO_Speaker_enable_GPIO_Port GPIOE #define BTN_PAUSE_Pin GPIO_PIN_13 #define BTN_PAUSE_GPIO_Port GPIOC #define BTN_GAME_Pin GPIO_PIN_1 #define BTN_GAME_GPIO_Port GPIOC #define BTN_PWR_Pin GPIO_PIN_0 #define BTN_PWR_GPIO_Port GPIOA #define BTN_TIME_Pin GPIO_PIN_5 #define BTN_TIME_GPIO_Port GPIOC #define BTN_A_Pin GPIO_PIN_9 #define BTN_A_GPIO_Port GPIOD #define BTN_Left_Pin GPIO_PIN_11 #define BTN_Left_GPIO_Port GPIOD #define BTN_Down_Pin GPIO_PIN_14 #define BTN_Down_GPIO_Port GPIOD #define BTN_Right_Pin GPIO_PIN_15 #define BTN_Right_GPIO_Port GPIOD #define BTN_Up_Pin GPIO_PIN_0 #define BTN_Up_GPIO_Port GPIOD #define BTN_B_Pin GPIO_PIN_5 #define BTN_B_GPIO_Port GPIOD // Zelda only buttons; they are not connected on mario. #define BTN_START_Pin GPIO_PIN_11 #define BTN_START_GPIO_Port GPIOC #define BTN_SELECT_Pin GPIO_PIN_12 #define BTN_SELECT_GPIO_Port GPIOC /* USER CODE BEGIN Private defines */ #define BOOT_MAGIC_STANDBY 0xfedebeda #define BOOT_MAGIC_RESET 0x1fa1afe1 #define BOOT_MAGIC_WATCHDOG 0xd066cafe #define BOOT_MAGIC_BSOD 0xbad00000 #define BOOT_MAGIC_FLASHAPP 0xf1a5f1a5 #define BOOT_MAGIC_BSOD_MASK 0xffff0000 #define PERSISTENT __attribute__((used)) __attribute__((section (".persistent"))) /* USER CODE END Private defines */ #ifdef __cplusplus } #endif #endif /* __MAIN_H */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/