board.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. /*
  2. * Copyright (c) 2006-2018, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2009-09-22 Bernard add board.h to this bsp
  9. */
  10. // <<< Use Configuration Wizard in Context Menu >>>
  11. #ifndef __BOARD_H__
  12. #define __BOARD_H__
  13. #include <stm32f4xx.h>
  14. #include <stm32f4xx_hal.h>
  15. #include <rtthread.h>
  16. #if \
  17. defined(SOC_STM32F410T8)||\
  18. defined(SOC_STM32F410TB)
  19. #define STM32F4xx_PIN_NUMBERS 36
  20. #elif \
  21. defined(SOC_STM32F401CB)||\
  22. defined(SOC_STM32F401CC)||\
  23. defined(SOC_STM32F401CD)||\
  24. defined(SOC_STM32F401CE)||\
  25. defined(SOC_STM32F410C8)||\
  26. defined(SOC_STM32F410CB)||\
  27. defined(SOC_STM32F411CC)||\
  28. defined(SOC_STM32F411CE)||\
  29. defined(SOC_STM32F412CEU)||\
  30. defined(SOC_STM32F412CGU)||\
  31. defined(SOC_STM32F413CH)||\
  32. defined(SOC_STM32F413CG)||\
  33. defined(SOC_STM32F423CH)
  34. #define STM32F4xx_PIN_NUMBERS 48
  35. #elif \
  36. defined(SOC_STM32F405RG)||\
  37. defined(SOC_STM32F415RG)||\
  38. defined(SOC_STM32F401RB)||\
  39. defined(SOC_STM32F401RC)||\
  40. defined(SOC_STM32F401RD)||\
  41. defined(SOC_STM32F401RE)||\
  42. defined(SOC_STM32F410R8)||\
  43. defined(SOC_STM32F410RB)||\
  44. defined(SOC_STM32F411RC)||\
  45. defined(SOC_STM32F411RE)||\
  46. defined(SOC_STM32F446RC)||\
  47. defined(SOC_STM32F446RE)||\
  48. defined(SOC_STM32F412RET)||\
  49. defined(SOC_STM32F412RGT)||\
  50. defined(SOC_STM32F412REY)||\
  51. defined(SOC_STM32F412RGY)||\
  52. defined(SOC_STM32F413RH)||\
  53. defined(SOC_STM32F413RG)||\
  54. defined(SOC_STM32F423RH)
  55. #define STM32F4xx_PIN_NUMBERS 64
  56. #elif \
  57. defined(SOC_STM32F446MC)||\
  58. defined(SOC_STM32F446ME)||\
  59. defined(SOC_STM32F413MH)||\
  60. defined(SOC_STM32F413MG)
  61. #define STM32F4xx_PIN_NUMBERS 81
  62. #elif \
  63. defined(SOC_STM32F405VG)||\
  64. defined(SOC_STM32F415VG)||\
  65. defined(SOC_STM32F407VG)||\
  66. defined(SOC_STM32F407VE)||\
  67. defined(SOC_STM32F417VG)||\
  68. defined(SOC_STM32F417VE)||\
  69. defined(SOC_STM32F427VG)||\
  70. defined(SOC_STM32F427VI)||\
  71. defined(SOC_STM32F437VG)||\
  72. defined(SOC_STM32F437VI)||\
  73. defined(SOC_STM32F429VG)||\
  74. defined(SOC_STM32F429VI)||\
  75. defined(SOC_STM32F439VG)||\
  76. defined(SOC_STM32F439VI)||\
  77. defined(SOC_STM32F401VB)||\
  78. defined(SOC_STM32F401VC)||\
  79. defined(SOC_STM32F401VD)||\
  80. defined(SOC_STM32F401VE)||\
  81. defined(SOC_STM32F411VC)||\
  82. defined(SOC_STM32F411VE)||\
  83. defined(SOC_STM32F446VC)||\
  84. defined(SOC_STM32F446VE)||\
  85. defined(SOC_STM32F412VET)||\
  86. defined(SOC_STM32F412VGT)||\
  87. defined(SOC_STM32F412VEH)||\
  88. defined(SOC_STM32F412VGH)||\
  89. defined(SOC_STM32F413VH)||\
  90. defined(SOC_STM32F413VG)||\
  91. defined(SOC_STM32F423VH)
  92. #define STM32F4xx_PIN_NUMBERS 100
  93. #elif \
  94. defined(SOC_STM32F405ZG)||\
  95. defined(SOC_STM32F415ZG)||\
  96. defined(SOC_STM32F407ZG)||\
  97. defined(SOC_STM32F407ZE)||\
  98. defined(SOC_STM32F417ZG)||\
  99. defined(SOC_STM32F417ZE)||\
  100. defined(SOC_STM32F427ZG)||\
  101. defined(SOC_STM32F427ZI)||\
  102. defined(SOC_STM32F437ZG)||\
  103. defined(SOC_STM32F437ZI)||\
  104. defined(SOC_STM32F429ZG)||\
  105. defined(SOC_STM32F429ZI)||\
  106. defined(SOC_STM32F439ZG)||\
  107. defined(SOC_STM32F439ZI)||\
  108. defined(SOC_STM32F446ZC)||\
  109. defined(SOC_STM32F446ZE)||\
  110. defined(SOC_STM32F412ZET)||\
  111. defined(SOC_STM32F412ZGT)||\
  112. defined(SOC_STM32F412ZEJ)||\
  113. defined(SOC_STM32F412ZGJ)||\
  114. defined(SOC_STM32F413ZH)||\
  115. defined(SOC_STM32F413ZG)||\
  116. defined(SOC_STM32F423ZH)
  117. #define STM32F4xx_PIN_NUMBERS 144
  118. #elif \
  119. defined(SOC_STM32F469AI)||\
  120. defined(SOC_STM32F469AG)||\
  121. defined(SOC_STM32F469AE)||\
  122. defined(SOC_STM32F479AI)||\
  123. defined(SOC_STM32F479AG)
  124. #define STM32F4xx_PIN_NUMBERS 169
  125. #elif \
  126. defined(SOC_STM32F407IG)||\
  127. defined(SOC_STM32F407IE)||\
  128. defined(SOC_STM32F417IG)||\
  129. defined(SOC_STM32F417IE)||\
  130. defined(SOC_STM32F427IG)||\
  131. defined(SOC_STM32F427II)||\
  132. defined(SOC_STM32F437IG)||\
  133. defined(SOC_STM32F437II)||\
  134. defined(SOC_STM32F429IG)||\
  135. defined(SOC_STM32F429II)||\
  136. defined(SOC_STM32F439IG)||\
  137. defined(SOC_STM32F439II)||\
  138. defined(SOC_STM32F469II)||\
  139. defined(SOC_STM32F469IG)||\
  140. defined(SOC_STM32F469IE)||\
  141. defined(SOC_STM32F479II)||\
  142. defined(SOC_STM32F479IG)
  143. #define STM32F4xx_PIN_NUMBERS 176
  144. #elif \
  145. defined(SOC_STM32F429BG)||\
  146. defined(SOC_STM32F429BI)||\
  147. defined(SOC_STM32F439BG)||\
  148. defined(SOC_STM32F439BI)||\
  149. defined(SOC_STM32F469BI)||\
  150. defined(SOC_STM32F469BG)||\
  151. defined(SOC_STM32F469BE)||\
  152. defined(SOC_STM32F479BI)||\
  153. defined(SOC_STM32F479BG)
  154. #define STM32F4xx_PIN_NUMBERS 208
  155. #elif \
  156. defined(SOC_STM32F429NG)||\
  157. defined(SOC_STM32F439NI)||\
  158. defined(SOC_STM32F439NG)||\
  159. defined(SOC_STM32F439NI)||\
  160. defined(SOC_STM32F469NI)||\
  161. defined(SOC_STM32F469NG)||\
  162. defined(SOC_STM32F469NE)||\
  163. defined(SOC_STM32F479NI)||\
  164. defined(SOC_STM32F479NG)
  165. #define STM32F4xx_PIN_NUMBERS 216
  166. #endif
  167. #if \
  168. defined(SOC_STM32F405RG)||\
  169. defined(SOC_STM32F405VG)||\
  170. defined(SOC_STM32F405ZG)
  171. //#define STM32F405xx
  172. #define STM32_SRAM_SIZE (192-64)
  173. #elif \
  174. defined(SOC_STM32F415RG)||\
  175. defined(SOC_STM32F415VG)||\
  176. defined(SOC_STM32F415ZG)
  177. //#define STM32F415xx
  178. #define STM32_SRAM_SIZE (192-64)
  179. #elif \
  180. defined(SOC_STM32F407VG)||\
  181. defined(SOC_STM32F407VE)||\
  182. defined(SOC_STM32F407ZG)||\
  183. defined(SOC_STM32F407ZE)||\
  184. defined(SOC_STM32F407IG)||\
  185. defined(SOC_STM32F407IE)
  186. //#define STM32F407xx
  187. #define STM32_SRAM_SIZE (192-64)
  188. #elif \
  189. defined(SOC_STM32F417VG)||\
  190. defined(SOC_STM32F417VE)||\
  191. defined(SOC_STM32F417ZG)||\
  192. defined(SOC_STM32F417ZE)||\
  193. defined(SOC_STM32F417IG)||\
  194. defined(SOC_STM32F417IE)
  195. //#define STM32F417xx
  196. #define STM32_SRAM_SIZE (192-64)
  197. #elif \
  198. defined(SOC_STM32F427VG)||\
  199. defined(SOC_STM32F427VI)||\
  200. defined(SOC_STM32F427ZG)||\
  201. defined(SOC_STM32F427ZI)||\
  202. defined(SOC_STM32F427IG)||\
  203. defined(SOC_STM32F427II)
  204. //#define STM32F427xx
  205. #define STM32_SRAM_SIZE (256-64)
  206. #elif \
  207. defined(SOC_STM32F437VG)||\
  208. defined(SOC_STM32F437VI)||\
  209. defined(SOC_STM32F437ZG)||\
  210. defined(SOC_STM32F437ZI)||\
  211. defined(SOC_STM32F437IG)||\
  212. defined(SOC_STM32F437II)
  213. //#define STM32F437xx
  214. #define STM32_SRAM_SIZE (256-64)
  215. #elif \
  216. defined(SOC_STM32F429VG)||\
  217. defined(SOC_STM32F429VI)||\
  218. defined(SOC_STM32F429ZG)||\
  219. defined(SOC_STM32F429ZI)||\
  220. defined(SOC_STM32F429BG)||\
  221. defined(SOC_STM32F429BI)||\
  222. defined(SOC_STM32F429NG)||\
  223. defined(SOC_STM32F429NI)||\
  224. defined(SOC_STM32F429IG)||\
  225. defined(SOC_STM32F429II)
  226. //#define STM32F429xx
  227. #define STM32_SRAM_SIZE (256-64)
  228. #elif \
  229. defined(SOC_STM32F439VG)||\
  230. defined(SOC_STM32F439VI)||\
  231. defined(SOC_STM32F439ZG)||\
  232. defined(SOC_STM32F439ZI)||\
  233. defined(SOC_STM32F439BG)||\
  234. defined(SOC_STM32F439BI)||\
  235. defined(SOC_STM32F439NG)||\
  236. defined(SOC_STM32F439NI)||\
  237. defined(SOC_STM32F439IG)||\
  238. defined(SOC_STM32F439II)
  239. //#define STM32F439xx
  240. #define STM32_SRAM_SIZE (256-64)
  241. #elif \
  242. defined(SOC_STM32F401CB)||\
  243. defined(SOC_STM32F401CC)||\
  244. defined(SOC_STM32F401RB)||\
  245. defined(SOC_STM32F401RC)||\
  246. defined(SOC_STM32F401VB)||\
  247. defined(SOC_STM32F401VC)
  248. //#define STM32F401xC
  249. #define STM32_SRAM_SIZE 64
  250. #elif \
  251. defined(SOC_STM32F401CD)||\
  252. defined(SOC_STM32F401RD)||\
  253. defined(SOC_STM32F401VD)||\
  254. defined(SOC_STM32F401CE)||\
  255. defined(SOC_STM32F401RE)||\
  256. defined(SOC_STM32F401VE)
  257. //#define STM32F401xE
  258. #define STM32_SRAM_SIZE 96
  259. #elif \
  260. defined(SOC_STM32F410T8)||\
  261. defined(SOC_STM32F410TB)
  262. //#define STM32F410Tx
  263. #define STM32_SRAM_SIZE 32
  264. #elif \
  265. defined(SOC_STM32F410C8)||\
  266. defined(SOC_STM32F410CB)
  267. //#define STM32F410Cx
  268. #define STM32_SRAM_SIZE 32
  269. #elif \
  270. defined(SOC_STM32F410R8)||\
  271. defined(SOC_STM32F410RB)
  272. //#define STM32F410Rx
  273. #define STM32_SRAM_SIZE 32
  274. #elif \
  275. defined(SOC_STM32F411CC)||\
  276. defined(SOC_STM32F411RC)||\
  277. defined(SOC_STM32F411VC)||\
  278. defined(SOC_STM32F411CE)||\
  279. defined(SOC_STM32F411RE)||\
  280. defined(SOC_STM32F411VE)
  281. //#define STM32F411xE
  282. #define STM32_SRAM_SIZE 128
  283. #elif \
  284. defined(SOC_STM32F446MC)||\
  285. defined(SOC_STM32F446ME)||\
  286. defined(SOC_STM32F446RC)||\
  287. defined(SOC_STM32F446RE)||\
  288. defined(SOC_STM32F446VC)||\
  289. defined(SOC_STM32F446VE)||\
  290. defined(SOC_STM32F446ZC)||\
  291. defined(SOC_STM32F446ZE)
  292. //#define STM32F446xx
  293. #define STM32_SRAM_SIZE 128
  294. #elif \
  295. defined(SOC_STM32F469AI)||\
  296. defined(SOC_STM32F469II)||\
  297. defined(SOC_STM32F469BI)||\
  298. defined(SOC_STM32F469NI)||\
  299. defined(SOC_STM32F469AG)||\
  300. defined(SOC_STM32F469IG)||\
  301. defined(SOC_STM32F469BG)||\
  302. defined(SOC_STM32F469NG)||\
  303. defined(SOC_STM32F469AE)||\
  304. defined(SOC_STM32F469IE)||\
  305. defined(SOC_STM32F469BE)||\
  306. defined(SOC_STM32F469NE)
  307. //#define STM32F469xx
  308. #define STM32_SRAM_SIZE (384-64)
  309. #elif \
  310. defined(SOC_STM32F479AI)||\
  311. defined(SOC_STM32F479II)||\
  312. defined(SOC_STM32F479BI)||\
  313. defined(SOC_STM32F479NI)||\
  314. defined(SOC_STM32F479AG)||\
  315. defined(SOC_STM32F479IG)||\
  316. defined(SOC_STM32F479BG)||\
  317. defined(SOC_STM32F479NG)
  318. //#define STM32F479xx
  319. #define STM32_SRAM_SIZE (384-64)
  320. #elif \
  321. defined(SOC_STM32F412CEU)||\
  322. defined(SOC_STM32F412CGU)
  323. //#define STM32F412Cx
  324. #elif \
  325. defined(SOC_STM32F412ZET)||\
  326. defined(SOC_STM32F412ZGT)||\
  327. defined(SOC_STM32F412ZEJ)||\
  328. defined(SOC_STM32F412ZGJ)
  329. //#define STM32F412Zx
  330. #define STM32_SRAM_SIZE 256
  331. #elif \
  332. defined(SOC_STM32F412VET)||\
  333. defined(SOC_STM32F412VGT)||\
  334. defined(SOC_STM32F412VEH)||\
  335. defined(SOC_STM32F412VGH)
  336. //#define STM32F412Vx
  337. #define STM32_SRAM_SIZE 256
  338. #elif \
  339. defined(SOC_STM32F412RET)||\
  340. defined(SOC_STM32F412RGT)||\
  341. defined(SOC_STM32F412REY)||\
  342. defined(SOC_STM32F412RGY)
  343. //#define STM32F412Rx
  344. #define STM32_SRAM_SIZE 256
  345. #elif \
  346. defined(SOC_STM32F413CH)||\
  347. defined(SOC_STM32F413MH)||\
  348. defined(SOC_STM32F413RH)||\
  349. defined(SOC_STM32F413VH)||\
  350. defined(SOC_STM32F413ZH)||\
  351. defined(SOC_STM32F413CG)||\
  352. defined(SOC_STM32F413MG)||\
  353. defined(SOC_STM32F413RG)||\
  354. defined(SOC_STM32F413VG)||\
  355. defined(SOC_STM32F413ZG)
  356. //#define STM32F413xx
  357. #define STM32_SRAM_SIZE 320
  358. #elif \
  359. defined(SOC_STM32F423CH)||\
  360. defined(SOC_STM32F423RH)||\
  361. defined(SOC_STM32F423VH)||\
  362. defined(SOC_STM32F423ZH)
  363. //#define STM32F423xx
  364. #define STM32_SRAM_SIZE 320
  365. #endif
  366. #define STM32_SRAM_END (0x20000000 + STM32_SRAM_SIZE * 1024)
  367. #if defined(__CC_ARM) || defined(__CLANG_ARM)
  368. extern int Image$$RW_IRAM1$$ZI$$Limit;
  369. #define HEAP_BEGIN ((void *)&Image$$RW_IRAM1$$ZI$$Limit)
  370. #elif __ICCARM__
  371. #pragma section="HEAP"
  372. #define HEAP_BEGIN (__segment_end("HEAP"))
  373. #else
  374. extern int __bss_end;
  375. #define HEAP_BEGIN ((void *)&__bss_end)
  376. #endif
  377. #define HEAP_END STM32_SRAM_END
  378. extern void rt_hw_board_init(void);
  379. #endif