bsp_STM32F405ANC.h 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  1. /**
  2. ******************************************************************************
  3. * @file bsp_STM32F405ANC.h
  4. * @author
  5. * @version V0.1.0
  6. * @date 01-April-2018
  7. * @brief This file contains definitions for ANCHOR hardware resources.
  8. * @Hardware DWM1000,RAK411,W5500,RX-8025T,ATMLH732,UART,LED/KEYS
  9. ******************************************************************************
  10. *
  11. *
  12. *
  13. *
  14. ******************************************************************************
  15. */
  16. /* Define to prevent recursive inclusion -------------------------------------*/
  17. #ifndef __BSP_STM32F405ANC_H
  18. #define __BSP_STM32F405ANC_H
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22. /* Includes ------------------------------------------------------------------*/
  23. #include "stm32f4xx.h"
  24. #include "stm32f4xx_hal.h"
  25. /** @defgroup STM32F4_BSP Exported bootloader and application addresses!
  26. * @ the values in icf files should be same with the values here!!
  27. */
  28. #define IAP_ADDRESS 0x08000000
  29. #define APP_ADDRESS 0x08010000
  30. #define STACK_MASK 0x2FFC0000
  31. #define MEM_RAM_BASE 0x20000000
  32. /*############################### GPIO #######################################*/
  33. #if defined(HAL_GPIO_MODULE_ENABLED)
  34. /** LED **/
  35. #define LED_UWB_PIN GPIO_PIN_10
  36. #define LED_UWB_GPIO_PORT GPIOA
  37. #define LED_UWB_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  38. #define LED_UWB_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  39. #define LED_COM_PIN GPIO_PIN_9
  40. #define LED_COM_GPIO_PORT GPIOA
  41. #define LED_COM_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  42. #define LED_COM_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  43. #define LED_BAT_PIN GPIO_PIN_8
  44. #define LED_BAT_GPIO_PORT GPIOA
  45. #define LED_BAT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  46. #define LED_BAT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  47. #define LED_RUN_PIN GPIO_PIN_9
  48. #define LED_RUN_GPIO_PORT GPIOC
  49. #define LED_RUN_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  50. #define LED_RUN_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  51. /** BUTTON **/
  52. #define KEY1_BUTTON_PIN GPIO_PIN_9
  53. #define KEY1_BUTTON_GPIO_PORT GPIOB
  54. #define KEY1_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  55. #define KEY1_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
  56. #define KEY1_BUTTON_EXTI_IRQn EXTI9_5_IRQn
  57. #define KEY1_BUTTON_EXTI_IRQn_PRIORITY 1
  58. #define KEY2_BUTTON_PIN GPIO_PIN_8
  59. #define KEY2_BUTTON_GPIO_PORT GPIOB
  60. #define KEY2_BUTTON_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  61. #define KEY2_BUTTON_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
  62. #define KEY2_BUTTON_EXTI_IRQn EXTI9_5_IRQn
  63. #define KEY2_BUTTON_EXTI_IRQn_PRIORITY 1
  64. #define KEY_PRESSED (0) //
  65. /** BAT status pin **/
  66. #define BSP_BAT_STATUS_PORT GPIOA
  67. #define BSP_BAT_STATUS_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  68. #define BSP_BAT_STATUS_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  69. #define BSP_BAT_STATUS_CHARGING_PIN GPIO_PIN_3
  70. #define BSP_BAT_STATUS_STANDBY_PIN GPIO_PIN_2
  71. #define BSP_BAT_STATUS_SHIFT_COUNT 3
  72. #define BSP_BAT_STATUS_MASK (0x03<<BSP_BAT_STATUS_SHIFT_COUNT)
  73. /*****Ext hardware watchdog**********/
  74. #define BSP_WATCHDOG_PORT GPIOC
  75. #define BSP_WATCHDOG_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  76. #define BSP_WATCHDOG_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  77. #define BSP_WATCHDOG_PIN GPIO_PIN_0
  78. #endif //HAL_GPIO_MODULE
  79. /*################################ RTC #######################################*/
  80. #if defined(HAL_RTC_MODULE_ENABLED)
  81. #define RTC_ENABLE 1
  82. //#define RTC_CLOCK_SOURCE_LSE
  83. #define RTC_CLOCK_SOURCE_LSI
  84. //#define RTC_ASYNCH_PREDIV 127U
  85. //#define RTC_SYNCH_PREDIV 255U
  86. #define RTC_ASYNCH_PREDIV 255U
  87. #define RTC_SYNCH_PREDIV 127U
  88. #define RTC_WAKEUP_CLOCK RTC_WAKEUPCLOCK_CK_SPRE_16BITS
  89. #define RTC_WAKEUP_COUNTER 0U
  90. //#define RTC_WAKEUP_CLOCK 2048U
  91. //#define RTC_WAKEUP_COUNTER RTC_WAKEUPCLOCK_RTCCLK_DIV16;
  92. #define RTC_WAKEUP_PRIORITY 0x0e
  93. #endif
  94. /*################################ SPI #######################################*/
  95. #if defined(HAL_SPI_MODULE_ENABLED)
  96. /* Maximum Timeout values for flags waiting loops. These timeouts are not based
  97. on accurate values, they just guarantee that the application will not remain
  98. stuck if the SPI communication is corrupted.
  99. You may modify these timeout values depending on CPU frequency and application
  100. conditions (interrupts routines ...). */
  101. #define SPIx_TIMEOUT_MAX 0x1000 /*<! The value of the maximal timeout for BUS waiting loops */
  102. /*
  103. SPI1: APB2(84MHZ)
  104. SPI2: APB1(42MHZ)
  105. SPI3: APB1(42MHZ)
  106. */
  107. /*############################### DWM #######################################*/
  108. #define DWM_SPIx SPI2
  109. #define DWM_SPIx_CLK_ENABLE() __HAL_RCC_SPI2_CLK_ENABLE()
  110. #define DWM_SPIx_CLK_DISABLE() __HAL_RCC_SPI2_CLK_DISABLE()
  111. #define DWM_SPIx_FORCE_RESET() __HAL_RCC_SPI2_FORCE_RESET()
  112. #define DWM_SPIx_RELEASE_RESET() __HAL_RCC_SPI2_RELEASE_RESET()
  113. #define DWM_SPIx_IRQn SPI2_IRQn
  114. #define DWM_SPIx_IRQ_PRIORITY 1
  115. #define DWM_SPIx_LOWSPEED_PRESCALER SPI_BAUDRATEPRESCALER_16
  116. #define DWM_SPIx_HIGHSPEED_PRESCALER SPI_BAUDRATEPRESCALER_2
  117. #define DWM_SPIx_CS_GPIO_PORT GPIOB
  118. #define DWM_SPIx_CS_PIN GPIO_PIN_12
  119. #define DWM_SPIx_CS_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  120. #define DWM_SPIx_Cs_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
  121. #define DWM_SPIx_GPIO_PORT GPIOB
  122. #define DWM_SPIx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  123. #define DWM_SPIx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
  124. #define DWM_SPIx_GPIO_AF GPIO_AF5_SPI2
  125. #define DWM_SPIx_SCK_PIN GPIO_PIN_13
  126. #define DWM_SPIx_MISO_PIN GPIO_PIN_14
  127. #define DWM_SPIx_MOSI_PIN GPIO_PIN_15
  128. #define DWM_WAKEUP_PORT GPIOC
  129. #define DWM_WAKEUP_PIN GPIO_PIN_7
  130. #define DWM_WAKEUP_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  131. #define DWM_WAKEUP_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  132. #define DWM_RST_PORT GPIOC
  133. #define DWM_RST_PIN GPIO_PIN_8
  134. #define DWM_RST_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  135. #define DWM_RST_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  136. #define DWM_RST_IRQ EXTI9_5_IRQn
  137. #define DWM_RST_PRIORITY 1
  138. #define DWM_IRQ_PORT GPIOC
  139. #define DWM_IRQ_PIN GPIO_PIN_6
  140. #define DWM_IRQ_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  141. #define DWM_IRQ_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  142. #define DWM_IRQ_EXTI EXTI9_5_IRQn
  143. #define DWM_IRQ_EXTI_PRIORITY 1
  144. /*############################### W5500 #######################################*/
  145. //#define W5500_INT_MODE
  146. #define W5500_SPIx SPI1
  147. #define W5500_SPIx_CLK_ENABLE() __HAL_RCC_SPI1_CLK_ENABLE()
  148. #define W5500_SPIx_CLK_DISABLE() __HAL_RCC_SPI1_CLK_DISABLE()
  149. #define W5500_SPIx_FORCE_RESET() __HAL_RCC_SPI1_FORCE_RESET()
  150. #define W5500_SPIx_RELEASE_RESET() __HAL_RCC_SPI1_RELEASE_RESET()
  151. //#define W5500_SPIx_PRESCALER SPI_BAUDRATEPRESCALER_8
  152. #define W5500_SPIx_PRESCALER SPI_BAUDRATEPRESCALER_4
  153. #define W5500_SPIx_SCS_PORT GPIOA
  154. #define W5500_SPIx_SCS_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  155. #define W5500_SPIx_SCS_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  156. #define W5500_SPIx_SCS_PIN GPIO_PIN_4
  157. #define W5500_SPIx_GPIO_PORT GPIOA
  158. #define W5500_SPIx_AF GPIO_AF5_SPI1
  159. #define W5500_SPIx_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  160. #define W5500_SPIx_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  161. #define W5500_SPIx_SCLK_PIN GPIO_PIN_5
  162. #define W5500_SPIx_MISO_PIN GPIO_PIN_6
  163. #define W5500_SPIx_MOSI_PIN GPIO_PIN_7
  164. #define W5500_CHIP_RESET_PORT GPIOB
  165. #define W5500_CHIP_RESET_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  166. #define W5500_CHIP_RESET_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
  167. #define W5500_CHIP_RESET_PIN GPIO_PIN_6
  168. #define W5500_EXTI_IRQ_PORT GPIOB
  169. #define W5500_EXTI_IRQ_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  170. #define W5500_EXTI_IRQ_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
  171. #define W5500_EXTI_IRQ_PIN GPIO_PIN_7
  172. #define W5500_EXTI_IRQ_IRQn EXTI9_5_IRQn
  173. #define W5500_EXIT_IRQ_PRIORITY 1
  174. /*############################### RAK411 #######################################*/
  175. #define RAK_SPIx SPI3
  176. #define RAK_SPIx_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE()
  177. #define RAK_SPIx_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE()
  178. #define RAK_SPIx_FORCE_RESET() __HAL_RCC_SPI3_FORCE_RESET()
  179. #define RAK_SPIx_RELEASE_RESET() __HAL_RCC_SPI3_RELEASE_RESET()
  180. #define RAK_SPIx_MODE SPI_MODE_MASTER
  181. #define RAK_SPIx_PRESCALER SPI_BAUDRATEPRESCALER_4
  182. #define RAK_SPIx_IRQn SPI3_IRQn
  183. #define RAK_SPIx_IRQ_PRIORITY 2
  184. #define RAK_SPIx_CS_GPIO_PORT GPIOA
  185. #define RAK_SPIx_CS_PIN GPIO_PIN_15
  186. #define RAK_SPIx_CS_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  187. #define RAK_SPIx_CS_GPIO_CLK_DISABLE() __HAL_RCC_GPIOA_CLK_DISABLE()
  188. #define RAK_SPIx_CS_GPIO_PULL GPIO_PULLUP
  189. #define RAK_SPIx_CS_Clear() HAL_GPIO_WritePin(RAK_SPIx_CS_GPIO_PORT, RAK_SPIx_CS_PIN, GPIO_PIN_RESET)
  190. #define RAK_SPIx_CS_Set() HAL_GPIO_WritePin(RAK_SPIx_CS_GPIO_PORT, RAK_SPIx_CS_PIN, GPIO_PIN_SET)
  191. #define RAK_SPIx_SCK_PIN GPIO_PIN_10
  192. #define RAK_SPIx_SCK_GPIO_PORT GPIOC
  193. #define RAK_SPIx_SCK_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  194. #define RAK_SPIx_SCK_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  195. #define RAK_SPIx_SCK_AF GPIO_AF6_SPI3
  196. #define RAK_SPIx_MISO_PIN GPIO_PIN_11
  197. #define RAK_SPIx_MISO_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  198. #define RAK_SPIx_MISO_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  199. #define RAK_SPIx_MISO_GPIO_PORT GPIOC
  200. #define RAK_SPIx_MISO_AF GPIO_AF6_SPI3
  201. #define RAK_SPIx_MOSI_PIN GPIO_PIN_12
  202. #define RAK_SPIx_MOSI_GPIO_PORT GPIOC
  203. #define RAK_SPIx_MOSI_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  204. #define RAK_SPIx_MOSI_GPIO_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  205. #define RAK_SPIx_MOSI_AF GPIO_AF6_SPI3
  206. #define RAK_SPIx_INT_PIN GPIO_PIN_4
  207. #define RAK_SPIx_INT_GPIO_PORT GPIOB
  208. #define RAK_SPIx_INT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  209. #define RAK_SPIx_INT_GPIO_CLK_DISABLE() __HAL_RCC_GPIOB_CLK_DISABLE()
  210. #define RAK_SPI_INT_GPIO_Status() HAL_GPIO_ReadPin(RAK_SPIx_INT_GPIO_PORT, RAK_SPIx_INT_PIN)
  211. #define RAK_SPI_INT_IRQ EXTI4_IRQn
  212. #define RAK_SPI_INT_IRQ_PRIORITY 3
  213. #define RAK_Reset_PIN GPIO_PIN_2
  214. #define RAK_Reset_GPIO_PORT GPIOD
  215. #define RAK_Reset_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
  216. #define RAK_Reset_GPIO_CLK_DISABLE() __HAL_RCC_GPIOD_CLK_DISABLE()
  217. #define RAK_Reset_Clear() HAL_GPIO_WritePin(RAK_Reset_GPIO_PORT, RAK_Reset_PIN, GPIO_PIN_RESET)
  218. #define RAK_Reset_Set() HAL_GPIO_WritePin(RAK_Reset_GPIO_PORT, RAK_Reset_PIN, GPIO_PIN_SET)
  219. #endif
  220. /*################################ UART #######################################*/
  221. /* DMA */
  222. #define UART_DMA_ENABLE 0
  223. #define UARTBUFFERSIZE 256
  224. #if defined(HAL_UART_MODULE_ENABLED)
  225. #define MODULE_USART1 USART1
  226. #define USART1_CLOCK_ENABLE() __HAL_RCC_USART1_CLK_ENABLE()
  227. #define USART1_FORCE_RESET() __HAL_RCC_USART1_FORCE_RESET()
  228. #define USART1_RELEASE_RESET() __HAL_RCC_USART1_RELEASE_RESET()
  229. #define USART1_IRQn USART1_IRQn
  230. #define USART1_IRQ_Handler USART1_IRQHandler
  231. #define USART1_DMA_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE()
  232. //#define USART1_BAUDRATE 1382400//115200
  233. #define USART1_BAUDRATE 4000000
  234. #define USART1_IRQ_PRIORITY 0x0b
  235. #define USART1_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  236. #define USART1_TX_GPIO_PIN GPIO_PIN_9
  237. #define USART1_TX_GPIO_PORT GPIOA
  238. #define USART1_TX_GPIO_AF GPIO_AF7_USART1
  239. #define USART1_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  240. #define USART1_RX_GPIO_PIN GPIO_PIN_10
  241. #define USART1_RX_GPIO_PORT GPIOA
  242. #define USART1_RX_GPIO_AF GPIO_AF7_USART1
  243. #define USART1_TX_DMA_CHANNEL DMA_CHANNEL_4
  244. #define USART1_TX_DMA_STREAM DMA2_Stream7
  245. #define USART1_DMA_TX_IRQn DMA2_Stream7_IRQn
  246. #define USART1_DMA_TX_IRQHandler DMA2_Stream7_IRQHandler
  247. #define USART1_DMA_TX_IRQ_PRIORITY 0x0d
  248. #define USART1_RX_DMA_CHANNEL DMA_CHANNEL_4
  249. #define USART1_RX_DMA_STREAM DMA2_Stream5
  250. #define USART1_DMA_RX_IRQn DMA2_Stream5_IRQn
  251. #define USART1_DMA_RX_IRQHandler DMA2_Stream5_IRQHandler
  252. #define USART1_DMA_RX_IRQ_PRIORITY 0x0c
  253. #define MODULE_USART2 USART2
  254. #define USART2_CLOCK_ENABLE() __HAL_RCC_USART2_CLK_ENABLE()
  255. #define USART2_FORCE_RESET() __HAL_RCC_USART2_FORCE_RESET()
  256. #define USART2_RELEASE_RESET() __HAL_RCC_USART2_RELEASE_RESET()
  257. #define USART2_IRQn USART2_IRQn
  258. #define USART2_IRQ_Handler USART2_IRQHandler
  259. #define USART2_BAUDRATE 115200
  260. #define USART2_DMA_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
  261. #define USART2_IRQ_PRIORITY 0x06
  262. #define USART2_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  263. #define USART2_TX_GPIO_PIN GPIO_PIN_2
  264. #define USART2_TX_GPIO_PORT GPIOA
  265. #define USART2_TX_GPIO_AF GPIO_AF7_USART2
  266. #define USART2_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  267. #define USART2_RX_GPIO_PIN GPIO_PIN_3
  268. #define USART2_RX_GPIO_PORT GPIOA
  269. #define USART2_RX_GPIO_AF GPIO_AF7_USART2
  270. #define USART2_TX_DMA_CHANNEL DMA_CHANNEL_4
  271. #define USART2_TX_DMA_STREAM DMA1_Stream6
  272. #define USART2_DMA_TX_IRQn DMA1_Stream6_IRQn
  273. #define USART2_DMA_TX_IRQHandler DMA1_Stream6_IRQHandler
  274. #define USART2_DMA_TX_IRQ_PRIORITY 0x07
  275. #define USART2_RX_DMA_CHANNEL DMA_CHANNEL_4
  276. #define USART2_RX_DMA_STREAM DMA1_Stream5
  277. #define USART2_DMA_RX_IRQn DMA1_Stream5_IRQn
  278. #define USART2_DMA_RX_IRQHandler DMA1_Stream5_IRQHandler
  279. #define USART2_DMA_RX_IRQ_PRIORITY 0x06
  280. #define MODULE_UART4 UART4
  281. #define UART4_CLOCK_ENABLE() __HAL_RCC_UART4_CLK_ENABLE()
  282. #define UART4_FORCE_RESET() __HAL_RCC_UART4_FORCE_RESET()
  283. #define UART4_RELEASE_RESET() __HAL_RCC_UART4_RELEASE_RESET()
  284. #define UART4_DMA_CLK_ENABLE() __HAL_RCC_DMA1_CLK_ENABLE()
  285. #define UART4_BAUDRATE 4000000
  286. #if defined(STM32F405_BOOTLOADER)
  287. #define UART4_IRQ_PRIORITY 1
  288. #else
  289. #define UART4_IRQ_PRIORITY 0x0b
  290. #endif
  291. #define UART4_TX_GPIO_PORT GPIOA
  292. #define UART4_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  293. #define UART4_TX_GPIO_PIN GPIO_PIN_0
  294. #define UART4_TX_GPIO_AF GPIO_AF8_UART4
  295. #define UART4_RX_GPIO_PORT GPIOA
  296. #define UART4_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  297. #define UART4_RX_GPIO_PIN GPIO_PIN_1
  298. #define UART4_RX_GPIO_AF GPIO_AF8_UART4
  299. #define UART4_TX_DMA_CHANNEL DMA_CHANNEL_4
  300. #define UART4_TX_DMA_STREAM DMA1_Stream4
  301. #define UART4_DMA_TX_IRQn DMA1_Stream4_IRQn
  302. #define UART4_DMA_TX_IRQHandler DMA1_Stream4_IRQHandler
  303. #define UART4_DMA_TX_IRQ_PRIORITY 0x0d
  304. #define UART4_RX_DMA_CHANNEL DMA_CHANNEL_4
  305. #define UART4_RX_DMA_STREAM DMA1_Stream2
  306. #define UART4_DMA_RX_IRQn DMA1_Stream2_IRQn
  307. #define UART4_DMA_RX_IRQHandler DMA1_Stream2_IRQHandler
  308. #define UART4_DMA_RX_IRQ_PRIORITY 0x0c
  309. #define DEBUG_PORT UART4
  310. #define MODULE_UART5 UART5
  311. #define UART5_CLOCK_ENABLE() __HAL_RCC_UART5_CLK_ENABLE()
  312. #define UART5_FORCE_RESET() __HAL_RCC_UART5_FORCE_RESET()
  313. #define UART5_RELEASE_RESET() __HAL_RCC_UART5_RELEASE_RESET()
  314. #define UART5_DMA_CLK_ENABLE() __HAL_RCC_DMA5_CLK_ENABLE()
  315. #define UART5_BAUDRATE 115200
  316. #if defined(STM32F405_BOOTLOADER)
  317. #define UART5_IRQ_PRIORITY 1
  318. #else
  319. #define UART5_IRQ_PRIORITY 0x0b
  320. #endif
  321. #define UART5_TX_GPIO_PORT GPIOC
  322. #define UART5_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  323. #define UART5_TX_GPIO_PIN GPIO_PIN_12
  324. #define UART5_TX_GPIO_AF GPIO_AF8_UART5
  325. #define UART5_RX_GPIO_PORT GPIOD
  326. #define UART5_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOD_CLK_ENABLE()
  327. #define UART5_RX_GPIO_PIN GPIO_PIN_2
  328. #define UART5_RX_GPIO_AF GPIO_AF8_UART5
  329. #define UART5_TX_DMA_CHANNEL DMA_CHANNEL_5
  330. #define UART5_TX_DMA_STREAM DMA1_Stream5
  331. #define UART5_DMA_TX_IRQn DMA1_Stream5_IRQn
  332. #define UART5_DMA_TX_IRQHandler DMA1_Stream5_IRQHandler
  333. #define UART5_DMA_TX_IRQ_PRIORITY 0x0d
  334. #define UART5_RX_DMA_CHANNEL DMA_CHANNEL_5
  335. #define UART5_RX_DMA_STREAM DMA1_Stream2
  336. #define UART5_DMA_RX_IRQn DMA1_Stream2_IRQn
  337. #define UART5_DMA_RX_IRQHandler DMA1_Stream2_IRQHandler
  338. #define UART5_DMA_RX_IRQ_PRIORITY 0x0c
  339. //#define DEBUG_BAUDRATE 4000000
  340. //#define DEBUG_BAUDRATE 256000
  341. //#define DEBUG_BAUDRATE 460800
  342. #define DEBUG_BAUDRATE 921600
  343. //#define DEBUG_BAUDRATE 1000000
  344. #if 0
  345. #define MODULE_USART6 USART6
  346. #define USART6_CLOCK_ENABLE() __HAL_RCC_USART6_CLK_ENABLE()
  347. #define USART6_FORCE_RESET() __HAL_RCC_USART6_FORCE_RESET()
  348. #define USART6_RELEASE_RESET() __HAL_RCC_USART6_RELEASE_RESET()
  349. #define USART6_IRQn USART6_IRQn
  350. #define USART6_IRQ_PRIORITY 0x06
  351. #define USART6_DEFAULT_BAUDRATE 115200
  352. //#define USART6_HIGH_BAUDRATE 256000
  353. //#define USART6_MAX_BAUDRATE 1382400
  354. #define USART6_MAX_BAUDRATE 4000000
  355. //#define USART6_MAX_BAUDRATE 4608000
  356. #define WIFI_UART_WORDLENGTH UART_WORDLENGTH_8B
  357. #define WIFI_UART_STOPBITS UART_STOPBITS_1
  358. #define WIFI_UART_PARITY UART_PARITY_NONE
  359. #define USART6_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  360. #define USART6_TX_GPIO_PIN GPIO_PIN_6
  361. #define USART6_TX_GPIO_PORT GPIOC
  362. #define USART6_TX_GPIO_AF GPIO_AF8_USART6
  363. #define USART6_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  364. #define USART6_RX_GPIO_PIN GPIO_PIN_7
  365. #define USART6_RX_GPIO_PORT GPIOC
  366. #define USART6_RX_GPIO_AF GPIO_AF8_USART6
  367. #define USART6_DMA_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE()
  368. #define USART6_TX_DMA_CHANNEL DMA_CHANNEL_5
  369. #define USART6_TX_DMA_STREAM DMA2_Stream6
  370. #define USART6_DMA_TX_IRQn DMA2_Stream6_IRQn
  371. #define USART6_DMA_TX_IRQHandler DMA2_Stream6_IRQHandler
  372. #define USART6_DMA_TX_IRQ_PRIORITY 0x07
  373. #define USART6_RX_DMA_CHANNEL DMA_CHANNEL_5
  374. #define USART6_RX_DMA_STREAM DMA2_Stream1
  375. #define USART6_DMA_RX_IRQn DMA2_Stream1_IRQn
  376. #define USART6_DMA_RX_IRQHandler DMA2_Stream1_IRQHandler
  377. #define USART6_DMA_RX_IRQ_PRIORITY 0x06
  378. #else
  379. #define MODULE_USART6 UART4
  380. #define USART6_CLOCK_ENABLE() __HAL_RCC_UART4_CLK_ENABLE()
  381. #define USART6_FORCE_RESET() __HAL_RCC_UART4_FORCE_RESET()
  382. #define USART6_RELEASE_RESET() __HAL_RCC_UART4_RELEASE_RESET()
  383. #define USART6_IRQn UART4_IRQn
  384. #define USART6_IRQ_PRIORITY 0x06
  385. #define USART6_DEFAULT_BAUDRATE 115200
  386. #define USART6_HIGH_BAUDRATE 256000
  387. #define USART6_MAX_BAUDRATE 1382400
  388. //#define USART6_MAX_BAUDRATE 4608000
  389. #define USART6_TX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  390. #define USART6_TX_GPIO_PIN GPIO_PIN_10
  391. #define USART6_TX_GPIO_PORT GPIOC
  392. #define USART6_TX_GPIO_AF GPIO_AF8_UART4
  393. #define USART6_RX_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  394. #define USART6_RX_GPIO_PIN GPIO_PIN_11
  395. #define USART6_RX_GPIO_PORT GPIOC
  396. #define USART6_RX_GPIO_AF GPIO_AF8_UART4
  397. #define USART6_DMA_CLK_ENABLE() __HAL_RCC_DMA2_CLK_ENABLE()
  398. #define USART6_TX_DMA_CHANNEL DMA_CHANNEL_5
  399. #define USART6_TX_DMA_STREAM DMA2_Stream6
  400. #define USART6_DMA_TX_IRQn DMA2_Stream6_IRQn
  401. #define USART6_DMA_TX_IRQHandler DMA2_Stream6_IRQHandler
  402. #define USART6_DMA_TX_IRQ_PRIORITY 0x07
  403. #define USART6_RX_DMA_CHANNEL DMA_CHANNEL_5
  404. #define USART6_RX_DMA_STREAM DMA2_Stream1
  405. #define USART6_DMA_RX_IRQn DMA2_Stream1_IRQn
  406. #define USART6_DMA_RX_IRQHandler DMA2_Stream1_IRQHandler
  407. #define USART6_DMA_RX_IRQ_PRIORITY 0x06
  408. #endif
  409. #define WIFI_LOWEST_BAUDRATE 115200
  410. #define WIFI_HIGHEST_BAUDRATE 4608000
  411. #define WIFI_UART_WORDLENGTH UART_WORDLENGTH_8B
  412. #define WIFI_UART_STOPBITS UART_STOPBITS_1
  413. #define WIFI_UART_PARITY UART_PARITY_NONE
  414. #define WIFI_CS_GPIO_PORT GPIOB
  415. #define WIFI_CS_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  416. #define WIFI_CS_PIN GPIO_PIN_10
  417. #define WIFI_CS_PIN_PULL GPIO_PULLDOWN
  418. #define WIFI_RST_GPIO_PORT GPIOB
  419. #define WIFI_RST_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  420. #define WIFI_RST_PIN GPIO_PIN_4
  421. #define WIFI_RST_PIN_PULL GPIO_NOPULL
  422. #define WIFI_ENABLE_GPIO_PORT GPIOA
  423. #define WIFI_ENABLE_GPIO_CLK_ENABLE() __HAL_RCC_GPIOA_CLK_ENABLE()
  424. #define WIFI_ENABLE_PIN GPIO_PIN_15
  425. #define WIFI_ENABLE_PIN_PULL GPIO_NOPULL
  426. #endif
  427. /*################################ ADC #######################################*/
  428. #if defined(HAL_ADC_MODULE_ENABLED)
  429. typedef enum{
  430. V5IN_CHANNEL = ADC_CHANNEL_14,
  431. VBAT_CHANNEL = ADC_CHANNEL_15,
  432. }eAdcChannels;
  433. #define BSP_ADCx ADC1
  434. #define BSP_ADCx_CLK_ENABLE() __HAL_RCC_ADC1_CLK_ENABLE()
  435. #define BSP_ADCx_CLK_DISABLE() __HAL_RCC_ADC1_CLK_DISABLE()
  436. #define BSP_ADCx_FORCE_RESET() __HAL_RCC_ADC_FORCE_RESET()
  437. #define BSP_ADCx_RELEASE_RESET() __HAL_RCC_ADC_RELEASE_RESET()
  438. #define BSP_ADCx_IRQn ADC_IRQn
  439. #define BSP_ADCx_IRQ_HANDLER ADC_IRQHandler
  440. #define BSP_ADCx_IRQ_PRIORITY 2
  441. #define BSP_ADCx_CHAN_PORT GPIOC
  442. #define BSP_ADCx_CHAN_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE()
  443. #define BSP_ADCx_CHAN_CLK_DISABLE() __HAL_RCC_GPIOC_CLK_DISABLE()
  444. #define BSP_ADCx_VBAT_PIN GPIO_PIN_5
  445. #define BSP_ADCx_V5IN_PIN GPIO_PIN_4
  446. #define BSP_ADC_PEROID 120
  447. #endif
  448. /*################################ I2C #######################################*/
  449. #if defined(HAL_I2C_MODULE_ENABLED)
  450. /* Definition for I2Cx clock resources */
  451. #define BSP_I2Cx I2C2
  452. #define BSP_I2Cx_CLK_ENABLE() __HAL_RCC_I2C2_CLK_ENABLE()
  453. #define BSP_I2Cx_FORCE_RESET() __HAL_RCC_I2C2_FORCE_RESET()
  454. #define BSP_I2Cx_RELEASE_RESET() __HAL_RCC_I2C2_RELEASE_RESET()
  455. #define BSP_I2Cx_SPEED 400000
  456. #define BSP_I2Cx_SLAVE_ADDRESS 0xf0
  457. #define BSP_I2Cx_SCL_GPIO_PORT GPIOB
  458. #define BSP_I2Cx_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  459. #define BSP_I2Cx_SCL_PIN GPIO_PIN_10
  460. #define BSP_I2Cx_SCL_AF GPIO_AF4_I2C2
  461. #define BSP_I2Cx_SCL_PULL GPIO_NOPULL
  462. #define BSP_I2Cx_SDA_GPIO_PORT GPIOB
  463. #define BSP_I2Cx_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  464. #define BSP_I2Cx_SDA_PIN GPIO_PIN_11
  465. #define BSP_I2Cx_SDA_AF GPIO_AF4_I2C2
  466. #define BSP_I2Cx_SDA_PULL GPIO_NOPULL
  467. #endif
  468. #define BSP_EEROM_WRITE_PROTECT_PORT GPIOB
  469. #define BSP_EEROM_WRITE_PROTECT_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  470. #define BSP_EEROM_WRITE_PROTECT_PIN GPIO_PIN_0
  471. #define BSP_EEROM_WRITE_PROTECT_PULL GPIO_NOPULL
  472. #define BSP_EEROM_WRITE_ENABLE() HAL_GPIO_WritePin(BSP_EEROM_WRITE_PROTECT_PORT, BSP_EEROM_WRITE_PROTECT_PIN, GPIO_PIN_RESET)
  473. #define BSP_EEROM_WRITE_FORBIDEN() HAL_GPIO_WritePin(BSP_EEROM_WRITE_PROTECT_PORT, BSP_EEROM_WRITE_PROTECT_PIN, GPIO_PIN_SET)
  474. #define BSP_RTC_INTERRUPT_PORT GPIOB
  475. #define BSP_RTC_INTERRUPT_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()
  476. #define BSP_RTC_INTERRUPT_PIN GPIO_PIN_1
  477. #define BSP_RTC_INTERRUPT_PULL GPIO_NOPULL
  478. #define BSP_RTC_INTERRUPT_IRQn EXTI1_IRQn
  479. #define BSP_RTC_INTERRUPT_PRIORITY 0x05
  480. /*Device Address*/
  481. #define BSP_RTC_WR_ADDRESS 0x64
  482. #define BSP_RTC_RD_ADDRESS 0x65
  483. #define BSP_EEROM_WR_ADDRESS 0xA0
  484. #define BSP_EEROM_RD_ADDRESS 0xA1
  485. /******************************************************************************/
  486. #ifdef __cplusplus
  487. }
  488. #endif
  489. #endif /* __BSP_STM32F405ANC_H */