stm32f4_discovery.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. /**
  2. ******************************************************************************
  3. * @file stm32f4_discovery.h
  4. * @author MCD Application Team
  5. * @brief This file contains definitions for STM32F4-Discovery Kit's Leds and
  6. * push-button hardware resources.
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * Copyright (c) 2017 STMicroelectronics.
  11. * All rights reserved.
  12. *
  13. * This software is licensed under terms that can be found in the LICENSE file
  14. * in the root directory of this software component.
  15. * If no LICENSE file comes with this software, it is provided AS-IS.
  16. *
  17. ******************************************************************************
  18. */
  19. /* Define to prevent recursive inclusion -------------------------------------*/
  20. #ifndef __STM32F4_DISCOVERY_H
  21. #define __STM32F4_DISCOVERY_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* Includes ------------------------------------------------------------------*/
  26. #include "stm32f4xx_hal.h"
  27. #include "../../../Projects/STM32F407-Discovery/Applications/2_Images/Linker_Common/EWARM/STM32_SBSFU_Define.h"
  28. /** @addtogroup BSP
  29. * @{
  30. */
  31. /** @addtogroup STM32F4_DISCOVERY
  32. * @{
  33. */
  34. /** @addtogroup STM32F4_DISCOVERY_LOW_LEVEL
  35. * @{
  36. */
  37. /** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_Exported_Types STM32F4 DISCOVERY LOW LEVEL_Exported_Types
  38. * @{
  39. */
  40. typedef enum
  41. {
  42. LED4 = 0,
  43. LED3 = 1,
  44. LED5 = 2,
  45. LED6 = 3
  46. } Led_TypeDef;
  47. typedef enum
  48. {
  49. BUTTON_KEY = 0,
  50. } Button_TypeDef;
  51. typedef enum
  52. {
  53. BUTTON_MODE_GPIO = 0,
  54. BUTTON_MODE_EXTI = 1
  55. } ButtonMode_TypeDef;
  56. /**
  57. * @}
  58. */
  59. /** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_Exported_Constants STM32F4 DISCOVERY LOW LEVEL Exported Constants
  60. * @{
  61. */
  62. /**
  63. * @brief Define for STM32F4_DISCOVERY board
  64. */
  65. #if !defined (USE_STM32F4_DISCO)
  66. #define USE_STM32F4_DISCO
  67. #endif
  68. /** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_LED STM32F4 DISCOVERY LOW LEVEL LED
  69. * @{
  70. */
  71. #define LEDn 4
  72. #define LED4_PIN GPIO_PIN_12
  73. #define LED4_GPIO_PORT GPIOD
  74. #define LED4_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
  75. #define LED4_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
  76. #define LED3_PIN GPIO_PIN_13
  77. #define LED3_GPIO_PORT GPIOD
  78. #define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
  79. #define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
  80. #define LED5_PIN GPIO_PIN_14
  81. #define LED5_GPIO_PORT GPIOD
  82. #define LED5_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
  83. #define LED5_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
  84. #define LED6_PIN GPIO_PIN_15
  85. #define LED6_GPIO_PORT GPIOD
  86. #define LED6_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
  87. #define LED6_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
  88. #define LEDx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) LED4_GPIO_CLK_ENABLE(); else \
  89. if((__INDEX__) == 1) LED3_GPIO_CLK_ENABLE(); else \
  90. if((__INDEX__) == 2) LED5_GPIO_CLK_ENABLE(); else \
  91. if((__INDEX__) == 3) LED6_GPIO_CLK_ENABLE(); \
  92. }while(0)
  93. #define LEDx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) LED4_GPIO_CLK_DISABLE(); else \
  94. if((__INDEX__) == 1) LED3_GPIO_CLK_DISABLE(); else \
  95. if((__INDEX__) == 2) LED5_GPIO_CLK_DISABLE(); else \
  96. if((__INDEX__) == 3) LED6_GPIO_CLK_DISABLE(); \
  97. }while(0)
  98. /**
  99. * @}
  100. */
  101. /** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_BUTTON STM32F4 DISCOVERY LOW LEVEL BUTTON
  102. * @{
  103. */
  104. #define BUTTONn 1
  105. /**
  106. * @brief Wakeup push-button
  107. */
  108. #ifdef STM32_SBSFU_FUNC_USE_PCB_AWX_MB
  109. #define KEY_BUTTON_PIN GPIO_PIN_2
  110. #define KEY_BUTTON_GPIO_PORT GPIOF
  111. #define KEY_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE()
  112. #define KEY_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOF_CLK_DISABLE()
  113. #define KEY_BUTTON_EXTI_IRQn EXTI2_IRQn
  114. #else
  115. #define KEY_BUTTON_PIN GPIO_PIN_0
  116. #define KEY_BUTTON_GPIO_PORT GPIOA
  117. #define KEY_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  118. #define KEY_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  119. #define KEY_BUTTON_EXTI_IRQn EXTI0_IRQn
  120. #endif
  121. #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) KEY_BUTTON_GPIO_CLK_ENABLE(); \
  122. }while(0)
  123. #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) KEY_BUTTON_GPIO_CLK_DISABLE(); \
  124. }while(0)
  125. /**
  126. * @}
  127. */
  128. /** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_BUS STM32F4 DISCOVERY LOW LEVEL BUS
  129. * @{
  130. */
  131. /*############################### SPI1 #######################################*/
  132. #define DISCOVERY_SPIx SPI1
  133. #define DISCOVERY_SPIx_CLK_ENABLE() __HAL_RCC_SPI1_CLK_ENABLE()
  134. #define DISCOVERY_SPIx_GPIO_PORT GPIOA /* GPIOA */
  135. #define DISCOVERY_SPIx_AF GPIO_AF5_SPI1
  136. #define DISCOVERY_SPIx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  137. #define DISCOVERY_SPIx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  138. #define DISCOVERY_SPIx_SCK_PIN GPIO_PIN_5 /* PA.05 */
  139. #define DISCOVERY_SPIx_MISO_PIN GPIO_PIN_6 /* PA.06 */
  140. #define DISCOVERY_SPIx_MOSI_PIN GPIO_PIN_7 /* PA.07 */
  141. /* Maximum Timeout values for flags waiting loops. These timeouts are not based
  142. on accurate values, they just guarantee that the application will not remain
  143. stuck if the SPI communication is corrupted.
  144. You may modify these timeout values depending on CPU frequency and application
  145. conditions (interrupts routines ...). */
  146. #define SPIx_TIMEOUT_MAX 0x1000 /*<! The value of the maximal timeout for BUS waiting loops */
  147. /*############################# I2C1 #########################################*/
  148. /* I2C clock speed configuration (in Hz) */
  149. #ifndef BSP_I2C_SPEED
  150. #define BSP_I2C_SPEED 100000
  151. #endif /* BSP_I2C_SPEED */
  152. /* I2C peripheral configuration defines (control interface of the audio codec) */
  153. #define DISCOVERY_I2Cx I2C1
  154. #define DISCOVERY_I2Cx_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE()
  155. #define DISCOVERY_I2Cx_SCL_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  156. #define DISCOVERY_I2Cx_SCL_SDA_AF GPIO_AF4_I2C1
  157. #define DISCOVERY_I2Cx_SCL_SDA_GPIO_PORT GPIOB
  158. #define DISCOVERY_I2Cx_SCL_PIN GPIO_PIN_6
  159. #define DISCOVERY_I2Cx_SDA_PIN GPIO_PIN_9
  160. #define DISCOVERY_I2Cx_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
  161. #define DISCOVERY_I2Cx_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
  162. /* I2C interrupt requests */
  163. #define DISCOVERY_I2Cx_EV_IRQn I2C1_EV_IRQn
  164. #define DISCOVERY_I2Cx_ER_IRQn I2C1_ER_IRQn
  165. /* Maximum Timeout values for flags waiting loops. These timeouts are not based
  166. on accurate values, they just guarantee that the application will not remain
  167. stuck if the SPI communication is corrupted.
  168. You may modify these timeout values depending on CPU frequency and application
  169. conditions (interrupts routines ...). */
  170. #define I2Cx_TIMEOUT_MAX 0x1000 /*<! The value of the maximal timeout for BUS waiting loops */
  171. /*############################# ACCELEROMETER ################################*/
  172. /* Read/Write command */
  173. #define READWRITE_CMD ((uint8_t)0x80)
  174. /* Multiple byte read/write command */
  175. #define MULTIPLEBYTE_CMD ((uint8_t)0x40)
  176. /* Dummy Byte Send by the SPI Master device in order to generate the Clock to the Slave device */
  177. #define DUMMY_BYTE ((uint8_t)0x00)
  178. /* Chip Select macro definition */
  179. #define ACCELERO_CS_LOW() HAL_GPIO_WritePin(ACCELERO_CS_GPIO_PORT, ACCELERO_CS_PIN, GPIO_PIN_RESET)
  180. #define ACCELERO_CS_HIGH() HAL_GPIO_WritePin(ACCELERO_CS_GPIO_PORT, ACCELERO_CS_PIN, GPIO_PIN_SET)
  181. /**
  182. * @brief ACCELEROMETER Interface pins
  183. */
  184. #define ACCELERO_CS_PIN GPIO_PIN_3 /* PE.03 */
  185. #define ACCELERO_CS_GPIO_PORT GPIOE /* GPIOE */
  186. #define ACCELERO_CS_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
  187. #define ACCELERO_CS_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE()
  188. #define ACCELERO_INT_GPIO_PORT GPIOE /* GPIOE */
  189. #define ACCELERO_INT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOE_CLK_ENABLE()
  190. #define ACCELERO_INT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOE_CLK_DISABLE()
  191. #define ACCELERO_INT1_PIN GPIO_PIN_0 /* PE.00 */
  192. #define ACCELERO_INT1_EXTI_IRQn EXTI0_IRQn
  193. #define ACCELERO_INT2_PIN GPIO_PIN_1 /* PE.01 */
  194. #define ACCELERO_INT2_EXTI_IRQn EXTI1_IRQn
  195. /**
  196. * @}
  197. */
  198. /*############################### AUDIO ######################################*/
  199. /**
  200. * @brief AUDIO I2C Interface pins
  201. */
  202. #define AUDIO_I2C_ADDRESS 0x94
  203. /* Audio Reset Pin definition */
  204. #define AUDIO_RESET_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
  205. #define AUDIO_RESET_PIN GPIO_PIN_4
  206. #define AUDIO_RESET_GPIO GPIOD
  207. /**
  208. * @}
  209. */
  210. /** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_Exported_Macros STM32F4 DISCOVERY LOW LEVEL Exported Macros
  211. * @{
  212. */
  213. /**
  214. * @}
  215. */
  216. /** @defgroup STM32F4_DISCOVERY_LOW_LEVEL_Exported_Functions STM32F4 DISCOVERY LOW LEVEL Exported Functions
  217. * @{
  218. */
  219. uint32_t BSP_GetVersion(void);
  220. void BSP_LED_Init(Led_TypeDef Led);
  221. void BSP_LED_On(Led_TypeDef Led);
  222. void BSP_LED_Off(Led_TypeDef Led);
  223. void BSP_LED_Toggle(Led_TypeDef Led);
  224. void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef Mode);
  225. uint32_t BSP_PB_GetState(Button_TypeDef Button);
  226. /**
  227. * @}
  228. */
  229. /**
  230. * @}
  231. */
  232. /**
  233. * @}
  234. */
  235. /**
  236. * @}
  237. */
  238. /**
  239. * @}
  240. */
  241. #ifdef __cplusplus
  242. }
  243. #endif
  244. #endif /* __STM32F4_DISCOVERY_H */