/** ****************************************************************************** * @file bsp.h * @author * @version V0.1.0 * @date 01-April-2018 * @brief This file contains definitions for ANCHOR hardware resources. ****************************************************************************** * * * * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM32F4_BSP_H #define __STM32F4_BSP_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include #include #include #if defined(BSP_STM32F407DEV) #include "bsp_STM32F407DEV.h" #elif defined(BSP_STM32F405ANC) || defined(STM32F405_BOOTLOADER) #include "bsp_STM32F405ANC.h" #else #error "[BSP] Undefined board!!" #endif /*########################## Board and module ################################*/ #define I2C_EEROM_MODULE 1 #define I2C_RTC_MODULE 1 #define RAK411_MODULE 0 #define W5500_MODULE 1 #define ESP8266_MODULE 1 /*############################### ENUM #######################################*/ #if 1 typedef enum { LED_UWB = 0, LED_COM, LED_BAT, LED_RUN, LED_NUM } Led_TypeDef; typedef enum { //BUTTON_KEYUP = 0, BUTTON_KEY1=0, BUTTON_KEY2, BUTTON_NUM } Button_TypeDef; typedef enum { BUTTON_MODE_GPIO = 0, BUTTON_MODE_EXTI = 1 } ButtonMode_TypeDef; typedef enum { DEBUG_UART=0, UART_NUM }Uart_TypeDef; typedef void (*pFunction)(void); typedef enum{ ADC_DEINIT=0, ADC_INIT, ADC_IDLE, ADC_CONVERT, ADC_COMPLETE, ADC_ERROR, ADC_WAIT,//LAST ONE }eAdcStatus; typedef struct{ eAdcStatus status; uint8_t count; uint8_t limit; uint16_t temp; eAdcChannels currentChannel; eAdcChannels lastChannel; uint16_t currentValue; uint16_t lastValue; }stAdcConvertStatus; #endif typedef void (*ACTION_ENTRY)(void); /*############################################################################*/ #define LEDx_GPIO_CLK_ENABLE(__INDEX__) do{ if((__INDEX__) == LED_UWB) LED_UWB_GPIO_CLK_ENABLE(); else \ if((__INDEX__) == LED_COM) LED_COM_GPIO_CLK_ENABLE(); else \ if((__INDEX__) == LED_BAT) LED_BAT_GPIO_CLK_ENABLE(); else \ if((__INDEX__) == LED_RUN) LED_RUN_GPIO_CLK_ENABLE(); \ }while(0) #define LEDx_GPIO_CLK_DISABLE(__INDEX__) do{ if((__INDEX__) == LED_UWB) LED_UWB_GPIO_CLK_DISABLE(); else \ if((__INDEX__) == LED_COM) LED_COM_GPIO_CLK_DISABLE(); else \ if((__INDEX__) == LED_BAT) LED_BAT_GPIO_CLK_DISABLE(); else \ if((__INDEX__) == LED_RUN) LED_RUN_GPIO_CLK_DISABLE(); \ }while(0) #if 1 #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do{ if((__INDEX__) == BUTTON_KEY1) KEY1_BUTTON_GPIO_CLK_ENABLE(); else\ if((__INDEX__) == BUTTON_KEY2) KEY2_BUTTON_GPIO_CLK_ENABLE(); \ }while(0) #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do{ if((__INDEX__) == BUTTON_KEY1) KEY1_BUTTON_GPIO_CLK_DISABLE(); else\ if((__INDEX__) == BUTTON_KEY2) KEY2_BUTTON_GPIO_CLK_DISABLE(); \ }while(0) #else #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do{ if((__INDEX__) == BUTTON_KEYUP) KEYUP_BUTTON_GPIO_CLK_ENABLE(); else\ if((__INDEX__) == BUTTON_KEY0) KEY0_BUTTON_GPIO_CLK_ENABLE(); else\ if((__INDEX__) == BUTTON_KEY1) KEY1_BUTTON_GPIO_CLK_ENABLE(); \ }while(0) #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do{ if((__INDEX__) == BUTTON_KEYUP) KEY_BUTTON_GPIO_CLK_DISABLE(); else\ if((__INDEX__) == BUTTON_KEY0) KEY0_BUTTON_GPIO_CLK_DISABLE(); else\ if((__INDEX__) == BUTTON_KEY1) KEY1_BUTTON_GPIO_CLK_DISABLE(); \ }while(0) #endif /*############################################################################*/ /** Exported varibles * */ extern ADC_HandleTypeDef BSP_AdcHandle; extern ADC_ChannelConfTypeDef BSP_AdcConfig; extern stAdcConvertStatus BSP_AdcStatus; extern SPI_HandleTypeDef DWM_SpiHandle; extern RTC_HandleTypeDef hRTC_Handle; extern RTC_TimeTypeDef currentTime; extern RTC_DateTypeDef currentDate; extern UART_HandleTypeDef wifi_UartHandle; extern UART_HandleTypeDef huart3; extern UART_HandleTypeDef debug_UartHandle; extern __IO uint32_t UartReady; #if defined(HAL_I2C_MODULE_ENABLED) extern I2C_HandleTypeDef I2cHandle; #endif /** Exported Functions * */ extern void BSP_SystemClock_Config(void); extern void BSP_LED_Init(Led_TypeDef Led); extern void BSP_LED_On(Led_TypeDef Led); extern void BSP_LED_Off(Led_TypeDef Led); extern void BSP_LED_Toggle(Led_TypeDef Led); extern void BSP_Button_Init(Button_TypeDef Button, ButtonMode_TypeDef Mode); extern uint32_t BSP_Button_GetState(Button_TypeDef Button); extern HAL_StatusTypeDef BSP_RTC_Init(void); extern void BSP_RTC_Update(void); extern void BSP_W5500_HW_Init(void); extern void BSP_W5500_HW_Reset(void); extern void BSP_W5500_Enable(void); extern void BSP_W5500_Disable(void); extern int BSP_W5500_Write(uint8_t *pData, uint16_t Size); extern int BSP_W5500_Read(uint8_t *pData, uint16_t Size); extern uint8_t BSP_W5500_WriteRead(uint8_t Byte); extern void BSP_DWM_Init(void); extern void BSP_DWM_SPI_FastRate(uint16_t isHigh); extern void BSP_RAK_SPI_Init(void); extern int BSP_Rak_Write(uint8_t *pData, uint16_t Size); extern int BSP_Rak_Read(uint8_t *pData, uint16_t Size); extern int BSP_RAK_WriteRead(uint8_t byte, uint8_t* rdvalue); extern void DebugUsart_Init(void); extern void DebugMessage(uint8_t *str); extern void ReportMessage(uint8_t* msg, uint32_t len); extern void BSP_BAT_Init(void); extern uint16_t BSP_BAT_UpdateStatus(void); extern void BSP_ADC_Init(void); extern void BSP_ADC_START_Convert(eAdcChannels channel); #if defined(HAL_I2C_MODULE_ENABLED) extern HAL_StatusTypeDef BSP_I2C_Init(void); extern void BSP_EEROM_EXT_Init(void); extern void BSP_RTC_EXT_Init(void); extern int BSP_EEROM_Read(uint16_t MemAddress, uint16_t Size, uint8_t *pData); extern int BSP_EEROM_write(uint16_t MemAddress, uint16_t Size, uint8_t *pData); #endif extern void BSP_WDG_Init(void); extern void BSP_WDG_Clear(void); extern void BSP_Reboot(void); extern void BSP_Jumpto_APP(void); extern void BSP_IAP_APP_Jump(void); #ifdef __cplusplus } #endif #endif /* __STM32F4_BSP_H */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/