bsp.h 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. /**
  2. ******************************************************************************
  3. * @file bsp.h
  4. * @author
  5. * @version V0.1.0
  6. * @date 01-April-2018
  7. * @brief This file contains definitions for ANCHOR hardware resources.
  8. ******************************************************************************
  9. *
  10. *
  11. *
  12. *
  13. ******************************************************************************
  14. */
  15. /* Define to prevent recursive inclusion -------------------------------------*/
  16. #ifndef __STM32F4_BSP_H
  17. #define __STM32F4_BSP_H
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21. /* Includes ------------------------------------------------------------------*/
  22. #include <stdio.h>
  23. #include <string.h>
  24. #include <stdlib.h>
  25. #if defined(BSP_STM32F407DEV)
  26. #include "bsp_STM32F407DEV.h"
  27. #elif defined(BSP_STM32F405ANC) || defined(STM32F405_BOOTLOADER)
  28. #include "bsp_STM32F405ANC.h"
  29. #else
  30. #error "[BSP] Undefined board!!"
  31. #endif
  32. /*########################## Board and module ################################*/
  33. #define I2C_EEROM_MODULE 1
  34. #define I2C_RTC_MODULE 1
  35. #define RAK411_MODULE 0
  36. #define W5500_MODULE 1
  37. #define ESP8266_MODULE 1
  38. /*############################### ENUM #######################################*/
  39. #if 1
  40. typedef enum
  41. {
  42. LED_UWB = 0,
  43. LED_COM,
  44. LED_BAT,
  45. LED_RUN,
  46. LED_NUM
  47. } Led_TypeDef;
  48. typedef enum
  49. {
  50. //BUTTON_KEYUP = 0,
  51. BUTTON_KEY1=0,
  52. BUTTON_KEY2,
  53. BUTTON_NUM
  54. } Button_TypeDef;
  55. typedef enum
  56. {
  57. BUTTON_MODE_GPIO = 0,
  58. BUTTON_MODE_EXTI = 1
  59. } ButtonMode_TypeDef;
  60. typedef enum
  61. {
  62. DEBUG_UART=0,
  63. UART_NUM
  64. }Uart_TypeDef;
  65. typedef void (*pFunction)(void);
  66. typedef enum{
  67. ADC_DEINIT=0,
  68. ADC_INIT,
  69. ADC_IDLE,
  70. ADC_CONVERT,
  71. ADC_COMPLETE,
  72. ADC_ERROR,
  73. ADC_WAIT,//LAST ONE
  74. }eAdcStatus;
  75. typedef struct{
  76. eAdcStatus status;
  77. uint8_t count;
  78. uint8_t limit;
  79. uint16_t temp;
  80. eAdcChannels currentChannel;
  81. eAdcChannels lastChannel;
  82. uint16_t currentValue;
  83. uint16_t lastValue;
  84. }stAdcConvertStatus;
  85. #endif
  86. typedef void (*ACTION_ENTRY)(void);
  87. /*############################################################################*/
  88. #define LEDx_GPIO_CLK_ENABLE(__INDEX__) do{ if((__INDEX__) == LED_UWB) LED_UWB_GPIO_CLK_ENABLE(); else \
  89. if((__INDEX__) == LED_COM) LED_COM_GPIO_CLK_ENABLE(); else \
  90. if((__INDEX__) == LED_BAT) LED_BAT_GPIO_CLK_ENABLE(); else \
  91. if((__INDEX__) == LED_RUN) LED_RUN_GPIO_CLK_ENABLE(); \
  92. }while(0)
  93. #define LEDx_GPIO_CLK_DISABLE(__INDEX__) do{ if((__INDEX__) == LED_UWB) LED_UWB_GPIO_CLK_DISABLE(); else \
  94. if((__INDEX__) == LED_COM) LED_COM_GPIO_CLK_DISABLE(); else \
  95. if((__INDEX__) == LED_BAT) LED_BAT_GPIO_CLK_DISABLE(); else \
  96. if((__INDEX__) == LED_RUN) LED_RUN_GPIO_CLK_DISABLE(); \
  97. }while(0)
  98. #if 1
  99. #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do{ if((__INDEX__) == BUTTON_KEY1) KEY1_BUTTON_GPIO_CLK_ENABLE(); else\
  100. if((__INDEX__) == BUTTON_KEY2) KEY2_BUTTON_GPIO_CLK_ENABLE(); \
  101. }while(0)
  102. #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do{ if((__INDEX__) == BUTTON_KEY1) KEY1_BUTTON_GPIO_CLK_DISABLE(); else\
  103. if((__INDEX__) == BUTTON_KEY2) KEY2_BUTTON_GPIO_CLK_DISABLE(); \
  104. }while(0)
  105. #else
  106. #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do{ if((__INDEX__) == BUTTON_KEYUP) KEYUP_BUTTON_GPIO_CLK_ENABLE(); else\
  107. if((__INDEX__) == BUTTON_KEY0) KEY0_BUTTON_GPIO_CLK_ENABLE(); else\
  108. if((__INDEX__) == BUTTON_KEY1) KEY1_BUTTON_GPIO_CLK_ENABLE(); \
  109. }while(0)
  110. #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do{ if((__INDEX__) == BUTTON_KEYUP) KEY_BUTTON_GPIO_CLK_DISABLE(); else\
  111. if((__INDEX__) == BUTTON_KEY0) KEY0_BUTTON_GPIO_CLK_DISABLE(); else\
  112. if((__INDEX__) == BUTTON_KEY1) KEY1_BUTTON_GPIO_CLK_DISABLE(); \
  113. }while(0)
  114. #endif
  115. /*############################################################################*/
  116. /** Exported varibles
  117. *
  118. */
  119. extern ADC_HandleTypeDef BSP_AdcHandle;
  120. extern ADC_ChannelConfTypeDef BSP_AdcConfig;
  121. extern stAdcConvertStatus BSP_AdcStatus;
  122. extern SPI_HandleTypeDef DWM_SpiHandle;
  123. extern RTC_HandleTypeDef hRTC_Handle;
  124. extern RTC_TimeTypeDef currentTime;
  125. extern RTC_DateTypeDef currentDate;
  126. extern UART_HandleTypeDef wifi_UartHandle;
  127. extern UART_HandleTypeDef huart3;
  128. extern UART_HandleTypeDef debug_UartHandle;
  129. extern __IO uint32_t UartReady;
  130. #if defined(HAL_I2C_MODULE_ENABLED)
  131. extern I2C_HandleTypeDef I2cHandle;
  132. #endif
  133. /** Exported Functions
  134. *
  135. */
  136. extern void BSP_SystemClock_Config(void);
  137. extern void BSP_LED_Init(Led_TypeDef Led);
  138. extern void BSP_LED_On(Led_TypeDef Led);
  139. extern void BSP_LED_Off(Led_TypeDef Led);
  140. extern void BSP_LED_Toggle(Led_TypeDef Led);
  141. extern void BSP_Button_Init(Button_TypeDef Button, ButtonMode_TypeDef Mode);
  142. extern uint32_t BSP_Button_GetState(Button_TypeDef Button);
  143. extern HAL_StatusTypeDef BSP_RTC_Init(void);
  144. extern void BSP_RTC_Update(void);
  145. extern void BSP_W5500_HW_Init(void);
  146. extern void BSP_W5500_HW_Reset(void);
  147. extern void BSP_W5500_Enable(void);
  148. extern void BSP_W5500_Disable(void);
  149. extern int BSP_W5500_Write(uint8_t *pData, uint16_t Size);
  150. extern int BSP_W5500_Read(uint8_t *pData, uint16_t Size);
  151. extern uint8_t BSP_W5500_WriteRead(uint8_t Byte);
  152. extern void BSP_DWM_Init(void);
  153. extern void BSP_DWM_SPI_FastRate(uint16_t isHigh);
  154. extern void BSP_RAK_SPI_Init(void);
  155. extern int BSP_Rak_Write(uint8_t *pData, uint16_t Size);
  156. extern int BSP_Rak_Read(uint8_t *pData, uint16_t Size);
  157. extern int BSP_RAK_WriteRead(uint8_t byte, uint8_t* rdvalue);
  158. extern void DebugUsart_Init(void);
  159. extern void DebugMessage(uint8_t *str);
  160. extern void ReportMessage(uint8_t* msg, uint32_t len);
  161. extern void BSP_BAT_Init(void);
  162. extern uint16_t BSP_BAT_UpdateStatus(void);
  163. extern void BSP_ADC_Init(void);
  164. extern void BSP_ADC_START_Convert(eAdcChannels channel);
  165. #if defined(HAL_I2C_MODULE_ENABLED)
  166. extern HAL_StatusTypeDef BSP_I2C_Init(void);
  167. extern void BSP_EEROM_EXT_Init(void);
  168. extern void BSP_RTC_EXT_Init(void);
  169. extern int BSP_EEROM_Read(uint16_t MemAddress, uint16_t Size, uint8_t *pData);
  170. extern int BSP_EEROM_write(uint16_t MemAddress, uint16_t Size, uint8_t *pData);
  171. #endif
  172. extern void BSP_WDG_Init(void);
  173. extern void BSP_WDG_Clear(void);
  174. extern void BSP_Reboot(void);
  175. extern void BSP_Jumpto_APP(void);
  176. extern void BSP_IAP_APP_Jump(void);
  177. #ifdef __cplusplus
  178. }
  179. #endif
  180. #endif /* __STM32F4_BSP_H */
  181. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/