board.h 11 KB

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