stm322xg_eval.h 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. /**
  2. ******************************************************************************
  3. * @file stm322xg_eval.h
  4. * @author MCD Application Team
  5. * @brief This file contains definitions for STM322xG_EVAL's LEDs,
  6. * push-buttons and COM ports hardware resources.
  7. ******************************************************************************
  8. * @attention
  9. *
  10. * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
  11. *
  12. * Redistribution and use in source and binary forms, with or without modification,
  13. * are permitted provided that the following conditions are met:
  14. * 1. Redistributions of source code must retain the above copyright notice,
  15. * this list of conditions and the following disclaimer.
  16. * 2. Redistributions in binary form must reproduce the above copyright notice,
  17. * this list of conditions and the following disclaimer in the documentation
  18. * and/or other materials provided with the distribution.
  19. * 3. Neither the name of STMicroelectronics nor the names of its contributors
  20. * may be used to endorse or promote products derived from this software
  21. * without specific prior written permission.
  22. *
  23. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  24. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  25. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  26. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  27. * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  28. * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  29. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  30. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  31. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  32. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  33. *
  34. ******************************************************************************
  35. */
  36. /* Define to prevent recursive inclusion -------------------------------------*/
  37. #ifndef __STM322xG_EVAL_H
  38. #define __STM322xG_EVAL_H
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif
  42. /* Includes ------------------------------------------------------------------*/
  43. #include "stm32f2xx_hal.h"
  44. /** @addtogroup BSP
  45. * @{
  46. */
  47. /** @addtogroup STM322xG_EVAL
  48. * @{
  49. */
  50. /** @addtogroup STM322xG_EVAL_LOW_LEVEL
  51. * @{
  52. */
  53. /** @defgroup STM322xG_EVAL_LOW_LEVEL_Exported_Types STM322xG EVAL LOW LEVEL Exported Types
  54. * @{
  55. */
  56. typedef enum
  57. {
  58. LED1 = 0,
  59. LED2 = 1,
  60. LED3 = 2,
  61. LED4 = 3
  62. }Led_TypeDef;
  63. typedef enum
  64. {
  65. BUTTON_WAKEUP = 0,
  66. BUTTON_TAMPER = 1,
  67. BUTTON_KEY = 2,
  68. BUTTON_RIGHT = 3,
  69. BUTTON_LEFT = 4,
  70. BUTTON_UP = 5,
  71. BUTTON_DOWN = 6,
  72. BUTTON_SEL = 7
  73. }Button_TypeDef;
  74. typedef enum
  75. {
  76. BUTTON_MODE_GPIO = 0,
  77. BUTTON_MODE_EXTI = 1
  78. }ButtonMode_TypeDef;
  79. typedef enum
  80. {
  81. JOY_MODE_GPIO = 0,
  82. JOY_MODE_EXTI = 1
  83. }JOYMode_TypeDef;
  84. typedef enum
  85. {
  86. JOY_NONE = 0,
  87. JOY_SEL = 1,
  88. JOY_DOWN = 2,
  89. JOY_LEFT = 3,
  90. JOY_RIGHT = 4,
  91. JOY_UP = 5
  92. }JOYState_TypeDef;
  93. typedef enum
  94. {
  95. COM1 = 0,
  96. COM2 = 1
  97. }COM_TypeDef;
  98. /**
  99. * @}
  100. */
  101. /** @defgroup STM322xG_EVAL_LOW_LEVEL_Exported_Constants STM322xG EVAL LOW LEVEL Exported Constants
  102. * @{
  103. */
  104. /**
  105. * @brief Define for STM322xG_EVAL board
  106. */
  107. #if !defined (USE_STM322xG_EVAL)
  108. #define USE_STM322xG_EVAL
  109. #endif
  110. /** @addtogroup STM322xG_EVAL_LOW_LEVEL_LED STM322xG EVAL LOW LEVEL LED
  111. * @{
  112. */
  113. #define LEDn 4
  114. #define LED1_PIN GPIO_PIN_6
  115. #define LED1_GPIO_PORT GPIOG
  116. #define LED1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
  117. #define LED1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
  118. #define LED2_PIN GPIO_PIN_8
  119. #define LED2_GPIO_PORT GPIOG
  120. #define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
  121. #define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
  122. #define LED3_PIN GPIO_PIN_9
  123. #define LED3_GPIO_PORT GPIOI
  124. #define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOI_CLK_ENABLE()
  125. #define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOI_CLK_DISABLE()
  126. #define LED4_PIN GPIO_PIN_7
  127. #define LED4_GPIO_PORT GPIOC
  128. #define LED4_GPIO_CLK RCC_AHB1Periph_GPIOC
  129. #define LED4_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  130. #define LED4_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  131. #define LEDx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) LED1_GPIO_CLK_ENABLE(); else \
  132. if((__INDEX__) == 1) LED2_GPIO_CLK_ENABLE(); else \
  133. if((__INDEX__) == 2) LED3_GPIO_CLK_ENABLE(); else \
  134. if((__INDEX__) == 3) LED4_GPIO_CLK_ENABLE(); \
  135. }while(0)
  136. #define LEDx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) LED1_GPIO_CLK_DISABLE(); else \
  137. if((__INDEX__) == 1) LED2_GPIO_CLK_DISABLE(); else \
  138. if((__INDEX__) == 2) LED3_GPIO_CLK_DISABLE(); else \
  139. if((__INDEX__) == 3) LED4_GPIO_CLK_DISABLE(); \
  140. }while(0)
  141. /**
  142. * @}
  143. */
  144. /** @addtogroup STM322xG_EVAL_LOW_LEVEL_BUTTON STM322xG EVAL LOW LEVEL BUTTON
  145. * @{
  146. */
  147. /* Joystick pins are connected to IO Expander (accessible through I2C1 interface) */
  148. #define BUTTONn 3
  149. /**
  150. * @brief Wakeup push-button
  151. */
  152. #define WAKEUP_BUTTON_PIN GPIO_PIN_0
  153. #define WAKEUP_BUTTON_GPIO_PORT GPIOA
  154. #define WAKEUP_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  155. #define WAKEUP_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  156. #define WAKEUP_BUTTON_EXTI_IRQn EXTI0_IRQn
  157. /**
  158. * @brief Tamper push-button
  159. */
  160. #define TAMPER_BUTTON_PIN GPIO_PIN_13
  161. #define TAMPER_BUTTON_GPIO_PORT GPIOC
  162. #define TAMPER_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  163. #define TAMPER_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  164. #define TAMPER_BUTTON_EXTI_IRQn EXTI15_10_IRQn
  165. /**
  166. * @brief Key push-button
  167. */
  168. #define KEY_BUTTON_PIN GPIO_PIN_15
  169. #define KEY_BUTTON_GPIO_PORT GPIOG
  170. #define KEY_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
  171. #define KEY_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOG_CLK_DISABLE()
  172. #define KEY_BUTTON_EXTI_IRQn EXTI15_10_IRQn
  173. #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) WAKEUP_BUTTON_GPIO_CLK_ENABLE(); else \
  174. if((__INDEX__) == 1) TAMPER_BUTTON_GPIO_CLK_ENABLE(); else \
  175. if((__INDEX__) == 2) KEY_BUTTON_GPIO_CLK_ENABLE(); \
  176. }while(0)
  177. #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) WAKEUP_BUTTON_GPIO_CLK_DISABLE(); else \
  178. if((__INDEX__) == 1) TAMPER_BUTTON_GPIO_CLK_DISABLE(); else \
  179. if ((__INDEX__) == 2) KEY_BUTTON_GPIO_CLK_DISABLE(); \
  180. }while(0)
  181. /**
  182. * @}
  183. */
  184. /** @addtogroup STM322xG_EVAL_LOW_LEVEL_COM STM322xG EVAL LOW LEVEL COM
  185. * @{
  186. */
  187. #define COMn 1
  188. /**
  189. * @brief Definition for COM port1, connected to USART3
  190. */
  191. #define EVAL_COM1 USART3
  192. #define EVAL_COM1_CLK_ENABLE() __HAL_RCC_USART3_CLK_ENABLE()
  193. #define EVAL_COM1_CLK_DISABLE() __HAL_RCC_USART3_CLK_DISABLE()
  194. #define EVAL_COM1_TX_PIN GPIO_PIN_10
  195. #define EVAL_COM1_TX_GPIO_PORT GPIOC
  196. #define EVAL_COM1_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  197. #define EVAL_COM1_TX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  198. #define EVAL_COM1_TX_AF GPIO_AF7_USART3
  199. #define EVAL_COM1_RX_PIN GPIO_PIN_11
  200. #define EVAL_COM1_RX_GPIO_PORT GPIOC
  201. #define EVAL_COM1_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  202. #define EVAL_COM1_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  203. #define EVAL_COM1_RX_AF GPIO_AF7_USART3
  204. #define EVAL_COM1_IRQn USART3_IRQn
  205. #define EVAL_COMx_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_CLK_ENABLE(); \
  206. }while(0)
  207. #define EVAL_COMx_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_CLK_DISABLE(); \
  208. }while(0)
  209. #define EVAL_COMx_TX_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_TX_GPIO_CLK_ENABLE(); \
  210. }while(0)
  211. #define EVAL_COMx_TX_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_TX_GPIO_CLK_DISABLE(); \
  212. }while(0)
  213. #define EVAL_COMx_RX_GPIO_CLK_ENABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_RX_GPIO_CLK_ENABLE(); \
  214. }while(0)
  215. #define EVAL_COMx_RX_GPIO_CLK_DISABLE(__INDEX__) do{if((__INDEX__) == 0) EVAL_COM1_RX_GPIO_CLK_DISABLE(); \
  216. }while(0)
  217. /**
  218. * @brief Definition for Potentiometer, connected to ADC3
  219. */
  220. #define ADCx ADC3
  221. #define ADCx_CLK_ENABLE() __HAL_RCC_ADC3_CLK_ENABLE()
  222. #define ADCx_CHANNEL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOF_CLK_ENABLE()
  223. #define ADCx_FORCE_RESET() __HAL_RCC_ADC_FORCE_RESET()
  224. #define ADCx_RELEASE_RESET() __HAL_RCC_ADC_RELEASE_RESET()
  225. /* Definition for ADCx Channel Pin */
  226. #define ADCx_CHANNEL_PIN GPIO_PIN_9
  227. #define ADCx_CHANNEL_GPIO_PORT GPIOF
  228. /* Definition for ADCx's Channel */
  229. #define ADCx_CHANNEL ADC_CHANNEL_7
  230. #define SAMPLINGTIME ADC_SAMPLETIME_3CYCLES
  231. #define ADCx_POLL_TIMEOUT 10
  232. /**
  233. * @brief Joystick Pins definition
  234. */
  235. #define JOY_SEL_PIN IO_PIN_7
  236. #define JOY_DOWN_PIN IO_PIN_6
  237. #define JOY_LEFT_PIN IO_PIN_5
  238. #define JOY_RIGHT_PIN IO_PIN_4
  239. #define JOY_UP_PIN IO_PIN_3
  240. #define JOY_NONE_PIN JOY_ALL_PINS
  241. #define JOY_ALL_PINS (IO_PIN_3 | IO_PIN_4 | IO_PIN_5 | IO_PIN_6 | IO_PIN_7)
  242. /* Exported constantIO -------------------------------------------------------*/
  243. /* I2C clock speed configuration (in Hz)
  244. WARNING:
  245. Make sure that this define is not already declared in other files (ie.
  246. stm322xg_eval.h file). It can be used in parallel by other modules. */
  247. #ifndef BSP_I2C_SPEED
  248. #define BSP_I2C_SPEED 100000
  249. #endif /* BSP_I2C_SPEED */
  250. #define IO_I2C_ADDRESS 0x88
  251. #define TS_I2C_ADDRESS 0x82
  252. #define CAMERA_I2C_ADDRESS 0x60
  253. #define AUDIO_I2C_ADDRESS 0x94
  254. /* For M24C64 devices, E0, E1 and E2 pins are all used for device
  255. address selection (no need for additional address lines). According to the
  256. Hardware connection on the board (on STM322xG-EVAL board E0 = E1 = E2 = 0) */
  257. #define EEPROM_I2C_ADDRESS 0xA0
  258. /* User can use this section to tailor I2Cx/I2Cx instance used and associated
  259. resources */
  260. /* Definition for I2Cx clock resources */
  261. #define EVAL_I2Cx I2C1
  262. #define EVAL_I2Cx_CLK_ENABLE() __HAL_RCC_I2C1_CLK_ENABLE()
  263. #define EVAL_DMAx_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
  264. #define EVAL_I2Cx_SCL_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  265. #define EVAL_I2Cx_FORCE_RESET() __HAL_RCC_I2C1_FORCE_RESET()
  266. #define EVAL_I2Cx_RELEASE_RESET() __HAL_RCC_I2C1_RELEASE_RESET()
  267. /* Definition for I2Cx Pins */
  268. #define EVAL_I2Cx_SCL_PIN GPIO_PIN_6
  269. #define EVAL_I2Cx_SCL_SDA_GPIO_PORT GPIOB
  270. #define EVAL_I2Cx_SCL_SDA_AF GPIO_AF4_I2C1
  271. #define EVAL_I2Cx_SDA_PIN GPIO_PIN_9
  272. /* I2C interrupt requests */
  273. #define EVAL_I2Cx_EV_IRQn I2C1_EV_IRQn
  274. #define EVAL_I2Cx_ER_IRQn I2C1_ER_IRQn
  275. /**
  276. * @}
  277. */
  278. /**
  279. * @}
  280. */
  281. /** @defgroup STM322xG_EVAL_LOW_LEVEL_Exported_Functions STM322xG EVAL LOW LEVEL Exported Functions
  282. * @{
  283. */
  284. uint32_t BSP_GetVersion(void);
  285. void BSP_LED_Init(Led_TypeDef Led);
  286. void BSP_LED_On(Led_TypeDef Led);
  287. void BSP_LED_Off(Led_TypeDef Led);
  288. void BSP_LED_Toggle(Led_TypeDef Led);
  289. void BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef Button_Mode);
  290. uint32_t BSP_PB_GetState(Button_TypeDef Button);
  291. void BSP_COM_Init(COM_TypeDef COM, UART_HandleTypeDef *huart);
  292. void BSP_POTENTIOMETER_Init(void);
  293. uint32_t BSP_POTENTIOMETER_GetLevel(void);
  294. uint8_t BSP_JOY_Init(JOYMode_TypeDef Joy_Mode);
  295. JOYState_TypeDef BSP_JOY_GetState(void);
  296. /**
  297. * @}
  298. */
  299. /**
  300. * @}
  301. */
  302. /**
  303. * @}
  304. */
  305. /**
  306. * @}
  307. */
  308. #ifdef __cplusplus
  309. }
  310. #endif
  311. #endif /* __STM322xG_EVAL_H */
  312. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/