stm32wlxx_nucleo.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. /**
  2. ******************************************************************************
  3. * @file stm32wlxx_nucleo.h
  4. * @author MCD Application Team
  5. * @brief Header for stm32wlxx_nucleo.c
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright (c) 2019 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under BSD 3-Clause license,
  13. * the "License"; You may not use this file except in compliance with the
  14. * License. You may obtain a copy of the License at:
  15. * opensource.org/licenses/BSD-3-Clause
  16. *
  17. ******************************************************************************
  18. */
  19. /* Define to prevent recursive inclusion -------------------------------------*/
  20. #ifndef STM32WLXX_NUCLEO_H
  21. #define STM32WLXX_NUCLEO_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* Includes ------------------------------------------------------------------*/
  26. #include "stm32wlxx_nucleo_errno.h"
  27. #include "stm32wlxx_nucleo_conf.h"
  28. #if (USE_BSP_COM_FEATURE > 0)
  29. #if (USE_COM_LOG > 0)
  30. #ifndef __GNUC__
  31. #include "stdio.h"
  32. #endif
  33. #endif
  34. #endif
  35. /** @addtogroup BSP
  36. * @{
  37. */
  38. /** @defgroup STM32WLXX_NUCLEO STM32WLXX-NUCLEO
  39. * @{
  40. */
  41. /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL LOW LEVEL
  42. * @{
  43. */
  44. /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Types LOW LEVEL Exported Types
  45. * @{
  46. */
  47. typedef enum
  48. {
  49. LED1 = 0,
  50. LED2 = 1,
  51. LED3 = 2,
  52. /* Color led aliases */
  53. LED_BLUE = LED1,
  54. LED_GREEN = LED2,
  55. LED_RED = LED3
  56. }Led_TypeDef;
  57. typedef enum
  58. {
  59. BUTTON_SW1 = 0,
  60. BUTTON_SW2 = 1,
  61. BUTTON_SW3 = 2,
  62. }Button_TypeDef;
  63. typedef enum
  64. {
  65. BUTTON_MODE_GPIO = 0,
  66. BUTTON_MODE_EXTI = 1
  67. }ButtonMode_TypeDef;
  68. #if (USE_BSP_COM_FEATURE > 0)
  69. typedef enum
  70. {
  71. COM1 = 0U,
  72. COMn
  73. }COM_TypeDef;
  74. typedef enum
  75. {
  76. COM_STOPBITS_1 = UART_STOPBITS_1,
  77. COM_STOPBITS_2 = UART_STOPBITS_2,
  78. }COM_StopBitsTypeDef;
  79. typedef enum
  80. {
  81. COM_PARITY_NONE = UART_PARITY_NONE,
  82. COM_PARITY_EVEN = UART_PARITY_EVEN,
  83. COM_PARITY_ODD = UART_PARITY_ODD,
  84. }COM_ParityTypeDef;
  85. typedef enum
  86. {
  87. COM_HWCONTROL_NONE = UART_HWCONTROL_NONE,
  88. COM_HWCONTROL_RTS = UART_HWCONTROL_RTS,
  89. COM_HWCONTROL_CTS = UART_HWCONTROL_CTS,
  90. COM_HWCONTROL_RTS_CTS = UART_HWCONTROL_RTS_CTS,
  91. }COM_HwFlowCtlTypeDef;
  92. typedef enum
  93. {
  94. COM_WORDLENGTH_7B = UART_WORDLENGTH_7B,
  95. COM_WORDLENGTH_8B = UART_WORDLENGTH_8B,
  96. COM_WORDLENGTH_9B = UART_WORDLENGTH_9B,
  97. }COM_WordLengthTypeDef;
  98. typedef struct
  99. {
  100. uint32_t BaudRate;
  101. COM_WordLengthTypeDef WordLength;
  102. COM_StopBitsTypeDef StopBits;
  103. COM_ParityTypeDef Parity;
  104. COM_HwFlowCtlTypeDef HwFlowCtl;
  105. }COM_InitTypeDef;
  106. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  107. typedef struct
  108. {
  109. pUART_CallbackTypeDef pMspInitCb;
  110. pUART_CallbackTypeDef pMspDeInitCb;
  111. }BSP_COM_Cb_t;
  112. #endif /* (USE_HAL_UART_REGISTER_CALLBACKS == 1) */
  113. #endif /* (USE_BSP_COM_FEATURE > 0) */
  114. typedef enum
  115. {
  116. ABSENT = 0,
  117. PRESENT = 1,
  118. }Presence_TypeDef;
  119. /**
  120. * @}
  121. */
  122. /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Constants LOW LEVEL Exported Constants
  123. * @{
  124. */
  125. /**
  126. * @brief STM32WLXX NUCLEO BSP Driver version number
  127. */
  128. #define __STM32WLXX_NUCLEO_BSP_VERSION_MAIN (0x00U) /*!< [31:24] main version */
  129. #define __STM32WLXX_NUCLEO_BSP_VERSION_SUB1 (0x03U) /*!< [23:16] sub1 version */
  130. #define __STM32WLXX_NUCLEO_BSP_VERSION_SUB2 (0x00U) /*!< [15:8] sub2 version */
  131. #define __STM32WLXX_NUCLEO_BSP_VERSION_RC (0x00U) /*!< [7:0] release candidate */
  132. #define __STM32WLXX_NUCLEO_BSP_VERSION ((__STM32WLXX_NUCLEO_BSP_VERSION_MAIN << 24)\
  133. |(__STM32WLXX_NUCLEO_BSP_VERSION_SUB1 << 16)\
  134. |(__STM32WLXX_NUCLEO_BSP_VERSION_SUB2 << 8 )\
  135. |(__STM32WLXX_NUCLEO_BSP_VERSION_RC))
  136. /**
  137. * @brief Define for STM32WLXX_NUCLEO board
  138. */
  139. #if !defined (USE_STM32WLXX_NUCLEO)
  140. #define USE_STM32WLXX_NUCLEO
  141. #endif
  142. /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_LED LOW LEVEL LED Constants
  143. * @{
  144. */
  145. #define LEDn 3
  146. #define LED1_PIN GPIO_PIN_15
  147. #define LED1_GPIO_PORT GPIOB
  148. #define LED1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  149. #define LED1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  150. #define LED2_PIN GPIO_PIN_9
  151. #define LED2_GPIO_PORT GPIOB
  152. #define LED2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  153. #define LED2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  154. #define LED3_PIN GPIO_PIN_11
  155. #define LED3_GPIO_PORT GPIOB
  156. #define LED3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  157. #define LED3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  158. #define LEDx_GPIO_CLK_ENABLE(__INDEX__) __HAL_RCC_GPIOB_CLK_ENABLE() /* All Led on same port */
  159. #define LEDx_GPIO_CLK_DISABLE(__INDEX__) __HAL_RCC_GPIOB_CLK_ENABLE() /* All Led on same port */
  160. /**
  161. * @}
  162. */
  163. /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_BUTTON LOW LEVEL BUTTON Constants
  164. * @{
  165. */
  166. #define BUTTONn 3
  167. /**
  168. * @brief Key push-buttons
  169. */
  170. #define BUTTON_SW1_PIN GPIO_PIN_0
  171. #define BUTTON_SW1_GPIO_PORT GPIOA
  172. #define BUTTON_SW1_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  173. #define BUTTON_SW1_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  174. #define BUTTON_SW1_EXTI_LINE EXTI_LINE_0
  175. #ifdef CORE_CM0PLUS
  176. #define BUTTON_SW1_EXTI_IRQn EXTI1_0_IRQn
  177. #else
  178. #define BUTTON_SW1_EXTI_IRQn EXTI0_IRQn
  179. #endif
  180. #define BUTTON_SW2_PIN GPIO_PIN_1
  181. #define BUTTON_SW2_GPIO_PORT GPIOA
  182. #define BUTTON_SW2_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  183. #define BUTTON_SW2_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  184. #define BUTTON_SW2_EXTI_LINE EXTI_LINE_1
  185. #ifdef CORE_CM0PLUS
  186. #define BUTTON_SW2_EXTI_IRQn EXTI1_0_IRQn
  187. #else
  188. #define BUTTON_SW2_EXTI_IRQn EXTI1_IRQn
  189. #endif
  190. #define BUTTON_SW3_PIN GPIO_PIN_6
  191. #define BUTTON_SW3_GPIO_PORT GPIOC
  192. #define BUTTON_SW3_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  193. #define BUTTON_SW3_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  194. #define BUTTON_SW3_EXTI_LINE EXTI_LINE_6
  195. #ifdef CORE_CM0PLUS
  196. #define BUTTON_SW3_EXTI_IRQn EXTI15_4_IRQn
  197. #else
  198. #define BUTTON_SW3_EXTI_IRQn EXTI9_5_IRQn
  199. #endif
  200. #define BUTTONx_GPIO_CLK_ENABLE(__INDEX__) do { if ((__INDEX__) == BUTTON_SW1) BUTTON_SW1_GPIO_CLK_ENABLE(); else \
  201. if ((__INDEX__) == BUTTON_SW2) BUTTON_SW2_GPIO_CLK_ENABLE(); else \
  202. if ((__INDEX__) == BUTTON_SW3) BUTTON_SW3_GPIO_CLK_ENABLE();} while(0)
  203. #define BUTTONx_GPIO_CLK_DISABLE(__INDEX__) do { if ((__INDEX__) == BUTTON_SW1) BUTTON_SW1_GPIO_CLK_DISABLE(); else \
  204. if ((__INDEX__) == BUTTON_SW2) BUTTON_SW2_GPIO_CLK_DISABLE(); else \
  205. if ((__INDEX__) == BUTTON_SW3) BUTTON_SW3_GPIO_CLK_DISABLE();} while(0)
  206. /**
  207. * @}
  208. */
  209. #if (USE_BSP_COM_FEATURE > 0)
  210. /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_COM LOW LEVEL COM Port Constants
  211. * @{
  212. */
  213. #define COM1_UART LPUART1
  214. #define COM1_CLK_ENABLE() __HAL_RCC_LPUART1_CLK_ENABLE()
  215. #define COM1_CLK_DISABLE() __HAL_RCC_LPUART1_CLK_DISABLE()
  216. #define COM1_TX_PIN GPIO_PIN_2
  217. #define COM1_TX_GPIO_PORT GPIOA
  218. #define COM1_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  219. #define COM1_TX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  220. #define COM1_TX_AF GPIO_AF8_LPUART1
  221. #define COM1_RX_PIN GPIO_PIN_3
  222. #define COM1_RX_GPIO_PORT GPIOA
  223. #define COM1_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  224. #define COM1_RX_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  225. #define COM1_RX_AF GPIO_AF8_LPUART1
  226. #define COM_POLL_TIMEOUT 1000
  227. #define MX_UART_InitTypeDef COM_InitTypeDef
  228. /**
  229. * @}
  230. */
  231. #endif /* (USE_BSP_COM_FEATURE > 0)*/
  232. /**
  233. * @}
  234. */
  235. /** @addtogroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Variables
  236. * @{
  237. */
  238. extern EXTI_HandleTypeDef hpb_exti[];
  239. #if (USE_BSP_COM_FEATURE > 0)
  240. extern UART_HandleTypeDef hcom_uart[];
  241. #endif /* (USE_BSP_COM_FEATURE > 0) */
  242. /**
  243. * @}
  244. */
  245. /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_Exported_Functions LOW LEVEL Exported Functions
  246. * @{
  247. */
  248. uint32_t BSP_GetVersion(void);
  249. /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_LED_Functions LOW LEVEL LED Functions
  250. * @{
  251. */
  252. int32_t BSP_LED_Init(Led_TypeDef Led);
  253. int32_t BSP_LED_DeInit(Led_TypeDef Led);
  254. int32_t BSP_LED_On(Led_TypeDef Led);
  255. int32_t BSP_LED_Off(Led_TypeDef Led);
  256. int32_t BSP_LED_Toggle(Led_TypeDef Led);
  257. int32_t BSP_LED_GetState(Led_TypeDef Led);
  258. /**
  259. * @}
  260. */
  261. /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_BUTTON_Functions LOW LEVEL BUTTON Functions
  262. * @{
  263. */
  264. int32_t BSP_PB_Init(Button_TypeDef Button, ButtonMode_TypeDef ButtonMode);
  265. int32_t BSP_PB_DeInit(Button_TypeDef Button);
  266. int32_t BSP_PB_GetState(Button_TypeDef Button);
  267. void BSP_PB_Callback(Button_TypeDef Button);
  268. void BSP_PB_IRQHandler(Button_TypeDef Button);
  269. /**
  270. * @}
  271. */
  272. #if (USE_BSP_COM_FEATURE > 0)
  273. /** @defgroup STM32WLXX_NUCLEO_LOW_LEVEL_COM_Functions LOW LEVEL COM Port Functions
  274. * @{
  275. */
  276. int32_t BSP_COM_Init(COM_TypeDef COM, COM_InitTypeDef *COM_Init);
  277. int32_t BSP_COM_DeInit(COM_TypeDef COM);
  278. #if (USE_COM_LOG > 0)
  279. int32_t BSP_COM_SelectLogPort (COM_TypeDef COM);
  280. #endif
  281. #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
  282. int32_t BSP_COM_RegisterDefaultMspCallbacks(COM_TypeDef COM);
  283. int32_t BSP_COM_RegisterMspCallbacks(COM_TypeDef COM , BSP_COM_Cb_t *Callback);
  284. #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
  285. HAL_StatusTypeDef MX_LPUART1_Init(UART_HandleTypeDef *huart, MX_UART_InitTypeDef *COM_Init);
  286. /**
  287. * @}
  288. */
  289. #endif /* (USE_BSP_COM_FEATURE > 0) */
  290. /**
  291. * @}
  292. */
  293. /**
  294. * @}
  295. */
  296. /**
  297. * @}
  298. */
  299. /**
  300. * @}
  301. */
  302. #ifdef __cplusplus
  303. }
  304. #endif
  305. #endif /* STM32WLXX_NUCLEO_H */
  306. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/