PageRenderTime 25ms CodeModel.GetById 8ms RepoModel.GetById 0ms app.codeStats 0ms

/unAS/boards/ST_STM3210E_EVAL/board.h

https://bitbucket.org/erwinkendo/unas
C Header | 255 lines | 171 code | 21 blank | 63 comment | 0 complexity | e992ab206d0edf7128c78e8dfa6fa2f3 MD5 | raw file
  1. /*
  2. ChibiOS/RT - Copyright (C) 2006,2007,2008,2009,2010,
  3. 2011,2012 Giovanni Di Sirio.
  4. This file is part of ChibiOS/RT.
  5. ChibiOS/RT is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 3 of the License, or
  8. (at your option) any later version.
  9. ChibiOS/RT is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #ifndef _BOARD_H_
  17. #define _BOARD_H_
  18. /*
  19. * Setup for the STMicroelectronics STM3210E-EVAL evaluation board.
  20. */
  21. /*
  22. * Board identifier.
  23. */
  24. #define BOARD_ST_STM3210E_EVAL
  25. #define BOARD_NAME "ST STM3210E-EVAL"
  26. /*
  27. * Board frequencies.
  28. */
  29. #define STM32_LSECLK 32768
  30. #define STM32_HSECLK 8000000
  31. /*
  32. * MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
  33. * Note: Older board revisions should define STM32F10X_HD instead, please
  34. * verify the STM32 model mounted on your board. The change also
  35. * affects your linker script.
  36. */
  37. #define STM32F10X_XL
  38. /*
  39. * IO pins assignments.
  40. */
  41. #define GPIOA_WAKEUP_BUTTON 0
  42. #define GPIOB_SC_3V_5V 0
  43. #define GPIOB_SPI1_CS 2
  44. #define GPIOB_TEMP_INT 5
  45. #define GPIOB_USB_DISC 14
  46. #define GPIOC_SC_CMDVCC 6
  47. #define GPIOC_SC_OFF 7
  48. #define GPIOC_TAMPER_BUTTON 13
  49. #define GPIOD_JOY_DOWN 3
  50. #define GPIOF_LED1 6
  51. #define GPIOF_LED2 7
  52. #define GPIOF_LED3 8
  53. #define GPIOF_LED4 9
  54. #define GPIOF_SD_DETECT 11
  55. #define GPIOG_JOY_SEL 7
  56. #define GPIOG_USER_BUTTON 8
  57. #define GPIOG_JOY_RIGHT 13
  58. #define GPIOG_JOY_LEFT 14
  59. #define GPIOG_JOY_UP 15
  60. /*
  61. * I/O ports initial setup, this configuration is established soon after reset
  62. * in the initialization code.
  63. * Please refer to the STM32 Reference Manual for details.
  64. */
  65. #define PIN_ANALOG(n) (0 << (((n) & 7) * 4))
  66. #define PIN_OUTPUT_PP_10(n) (1 << (((n) & 7) * 4))
  67. #define PIN_OUTPUT_PP_2(n) (2 << (((n) & 7) * 4))
  68. #define PIN_OUTPUT_PP_50(n) (3 << (((n) & 7) * 4))
  69. #define PIN_INPUT(n) (4 << (((n) & 7) * 4))
  70. #define PIN_OUTPUT_OD_10(n) (5 << (((n) & 7) * 4))
  71. #define PIN_OUTPUT_OD_2(n) (6 << (((n) & 7) * 4))
  72. #define PIN_OUTPUT_OD_50(n) (7 << (((n) & 7) * 4))
  73. #define PIN_INPUT_PUD(n) (8 << (((n) & 7) * 4))
  74. #define PIN_ALTERNATE_PP_10(n) (9 << (((n) & 7) * 4))
  75. #define PIN_ALTERNATE_PP_2(n) (10 << (((n) & 7) * 4))
  76. #define PIN_ALTERNATE_PP_50(n) (11 << (((n) & 7) * 4))
  77. #define PIN_ALTERNATE_OD_10(n) (13 << (((n) & 7) * 4))
  78. #define PIN_ALTERNATE_OD_2(n) (14 << (((n) & 7) * 4))
  79. #define PIN_ALTERNATE_OD_50(n) (15 << (((n) & 7) * 4))
  80. #define PIN_UNDEFINED(n) PIN_INPUT_PUD(n)
  81. /*
  82. * Port A setup.
  83. */
  84. #define VAL_GPIOACRL (PIN_INPUT(0) | /* Wakeup Button. */ \
  85. PIN_OUTPUT_PP_50(1) | /* USART2_RTS. */ \
  86. PIN_ALTERNATE_PP_50(2) | /* USART2_TX. */ \
  87. PIN_INPUT(3) | /* USART2_RX. */ \
  88. PIN_UNDEFINED(4) | \
  89. PIN_ALTERNATE_PP_50(5) | /* SPI1_SCK. */ \
  90. PIN_INPUT(6) | /* SPI1_MISO. */ \
  91. PIN_ALTERNATE_PP_50(7)) /* SPI1_MOSI. */
  92. #define VAL_GPIOACRH (PIN_ALTERNATE_PP_50(8) | /* MCO. */ \
  93. PIN_ALTERNATE_PP_50(9) | /* USART1_TX. */ \
  94. PIN_INPUT(10) | /* USART1_RX. */ \
  95. PIN_INPUT_PUD(11) | /* USB_DM. */ \
  96. PIN_INPUT_PUD(12) | /* USB_DP. */ \
  97. PIN_INPUT(13) | /* TMS. */ \
  98. PIN_INPUT(14) | /* TCK. */ \
  99. PIN_INPUT(15)) /* TDI. */
  100. #define VAL_GPIOAODR 0xFFFFFFFF
  101. /*
  102. * Port B setup.
  103. */
  104. #define VAL_GPIOBCRL (PIN_OUTPUT_PP_50(0) | /* SmartCard_3/5V. */ \
  105. PIN_INPUT_PUD(1) | /* Unconnected. */ \
  106. PIN_OUTPUT_PP_50(2) | /* SPI1_CS. */ \
  107. PIN_INPUT(3) | /* TDO. */ \
  108. PIN_INPUT(4) | /* TRST. */ \
  109. PIN_INPUT_PUD(5) | /* Temp.Sensor INT. */ \
  110. PIN_ALTERNATE_OD_50(6) | /* I2C1_SCK. */ \
  111. PIN_ALTERNATE_OD_50(7)) /* I2C1_SDA. */
  112. #define VAL_GPIOBCRH (PIN_INPUT(8) | /* CAN_RX. */ \
  113. PIN_ALTERNATE_PP_50(9) | /* CAN_TX. */ \
  114. PIN_ALTERNATE_OD_50(10)| /* SmartCard IO. */ \
  115. PIN_OUTPUT_PP_50(11) | /* SmartCard RST. */ \
  116. PIN_ALTERNATE_PP_50(12)| /* SmartCard CLK. */ \
  117. PIN_UNDEFINED(13) | \
  118. PIN_OUTPUT_PP_50(14) | /* USB disconnect. */ \
  119. PIN_UNDEFINED(15))
  120. #define VAL_GPIOBODR 0xFFFFFFFF
  121. /*
  122. * Port C setup.
  123. */
  124. #define VAL_GPIOCCRL (PIN_UNDEFINED(0) | \
  125. PIN_UNDEFINED(1) | \
  126. PIN_UNDEFINED(2) | \
  127. PIN_UNDEFINED(3) | \
  128. PIN_ANALOG(4) | /* Potentiometer. */ \
  129. PIN_UNDEFINED(5) | \
  130. PIN_OUTPUT_PP_50(6) | /* SmartCard CMDVCC. */ \
  131. PIN_INPUT(7)) /* SmartCard OFF. */
  132. #define VAL_GPIOCCRH (PIN_ALTERNATE_PP_50(8) | /* SDIO D0. */ \
  133. PIN_ALTERNATE_PP_50(9) | /* SDIO D1. */ \
  134. PIN_ALTERNATE_PP_50(10)| /* SDIO D2. */ \
  135. PIN_ALTERNATE_PP_50(11)| /* SDIO D3. */ \
  136. PIN_ALTERNATE_PP_50(12)| /* SDIO CLK. */ \
  137. PIN_INPUT(13) | /* Tamper Button. */ \
  138. PIN_INPUT(14) | /* OSC IN. */ \
  139. PIN_INPUT(15)) /* OSC OUT. */
  140. #define VAL_GPIOCODR 0xFFFFFFFF
  141. /*
  142. * Port D setup
  143. */
  144. #define VAL_GPIODCRL (PIN_ALTERNATE_PP_50(0) | /* FSMC_D2. */ \
  145. PIN_ALTERNATE_PP_50(1) | /* FSMC_D3. */ \
  146. PIN_ALTERNATE_PP_50(2) | /* SDIO CMD. */ \
  147. PIN_INPUT(3) | /* Joy Down. */ \
  148. PIN_ALTERNATE_PP_50(4) | /* FSMC_NOE. */ \
  149. PIN_ALTERNATE_PP_50(5) | /* FSMC_NWE. */ \
  150. PIN_INPUT(6) | /* FSMC_NWAIT. */ \
  151. PIN_ALTERNATE_PP_50(7)) /* FSMC_NCE2. */
  152. #define VAL_GPIODCRH (PIN_ALTERNATE_PP_50(8) | /* FSMC_D13. */ \
  153. PIN_ALTERNATE_PP_50(9) | /* FSMC_D14. */ \
  154. PIN_ALTERNATE_PP_50(10)| /* FSMC_D15. */ \
  155. PIN_ALTERNATE_PP_50(11)| /* FSMC_A16. */ \
  156. PIN_ALTERNATE_PP_50(12)| /* FSMC_A17. */ \
  157. PIN_ALTERNATE_PP_50(13)| /* FSMC_A18. */ \
  158. PIN_ALTERNATE_PP_50(14)| /* FSMC_D0. */ \
  159. PIN_ALTERNATE_PP_50(15)) /* FSMC_D1. */
  160. #define VAL_GPIODODR 0xFFFFFFFF
  161. /*
  162. * Port E setup.
  163. */
  164. #define VAL_GPIOECRL (PIN_ALTERNATE_PP_50(0) | /* FSMC_NBL0. */ \
  165. PIN_ALTERNATE_PP_50(1) | /* FSMC_NBL1. */ \
  166. PIN_ALTERNATE_PP_50(2) | /* FSMC_A23. */ \
  167. PIN_ALTERNATE_PP_50(3) | /* FSMC_A19. */ \
  168. PIN_ALTERNATE_PP_50(4) | /* FSMC_A20. */ \
  169. PIN_ALTERNATE_PP_50(5) | /* FSMC_A21. */ \
  170. PIN_ALTERNATE_PP_50(6) | /* FSMC_A22. */ \
  171. PIN_ALTERNATE_PP_50(7)) /* FSMC_D4. */
  172. #define VAL_GPIOECRH (PIN_ALTERNATE_PP_50(8) | /* FSMC_D5. */ \
  173. PIN_ALTERNATE_PP_50(9) | /* FSMC_D6. */ \
  174. PIN_ALTERNATE_PP_50(10)| /* FSMC_D7. */ \
  175. PIN_ALTERNATE_PP_50(11)| /* FSMC_D8. */ \
  176. PIN_ALTERNATE_PP_50(12)| /* FSMC_D9. */ \
  177. PIN_ALTERNATE_PP_50(13)| /* FSMC_D10. */ \
  178. PIN_ALTERNATE_PP_50(14)| /* FSMC_D11. */ \
  179. PIN_ALTERNATE_PP_50(15)) /* FSMC_D12. */
  180. #define VAL_GPIOEODR 0xFFFFFFFF
  181. /*
  182. * Port F setup.
  183. */
  184. #define VAL_GPIOFCRL (PIN_ALTERNATE_PP_50(0) | /* FSMC_A0. */ \
  185. PIN_ALTERNATE_PP_50(1) | /* FSMC_A1. */ \
  186. PIN_ALTERNATE_PP_50(2) | /* FSMC_A2. */ \
  187. PIN_ALTERNATE_PP_50(3) | /* FSMC_A3. */ \
  188. PIN_ALTERNATE_PP_50(4) | /* FSMC_A4. */ \
  189. PIN_ALTERNATE_PP_50(5) | /* FSMC_A5. */ \
  190. PIN_OUTPUT_PP_50(6) | /* LED1. */ \
  191. PIN_OUTPUT_PP_50(7)) /* LED2. */
  192. #define VAL_GPIOFCRH (PIN_OUTPUT_PP_50(8) | /* LED3. */ \
  193. PIN_OUTPUT_PP_50(9) | /* LED4. */ \
  194. PIN_UNDEFINED(10) | \
  195. PIN_INPUT_PUD(11) | /* SDCard detect. */ \
  196. PIN_ALTERNATE_PP_50(12)| /* FSMC_A6. */ \
  197. PIN_ALTERNATE_PP_50(13)| /* FSMC_A7. */ \
  198. PIN_ALTERNATE_PP_50(14)| /* FSMC_A8. */ \
  199. PIN_ALTERNATE_PP_50(15)) /* FSMC_A9. */
  200. #define VAL_GPIOFODR 0xFFFFFC3F
  201. /*
  202. * Port G setup.
  203. */
  204. #define VAL_GPIOGCRL (PIN_ALTERNATE_PP_50(0) | /* FSMC_A10. */ \
  205. PIN_ALTERNATE_PP_50(1) | /* FSMC_A11. */ \
  206. PIN_ALTERNATE_PP_50(2) | /* FSMC_A12. */ \
  207. PIN_ALTERNATE_PP_50(3) | /* FSMC_A13. */ \
  208. PIN_ALTERNATE_PP_50(4) | /* FSMC_A14. */ \
  209. PIN_ALTERNATE_PP_50(5) | /* FSMC_A15. */ \
  210. PIN_INPUT(6) | /* FSMC_INT2. */ \
  211. PIN_INPUT(7)) /* Joy Select. */
  212. #define VAL_GPIOGCRH (PIN_INPUT(8) | /* User Button. */ \
  213. PIN_ALTERNATE_PP_50(9) | /* FSMC_NE2. */ \
  214. PIN_ALTERNATE_PP_50(10)| /* FSMC_NE3. */ \
  215. PIN_OUTPUT_PP_50(11) | /* Audio PDN. */ \
  216. PIN_ALTERNATE_PP_50(12)| /* FSMC_NE4. */ \
  217. PIN_INPUT(13) | /* Joy Right. */ \
  218. PIN_INPUT(14) | /* Joy Left. */ \
  219. PIN_INPUT(15)) /* Joy Up. */
  220. #define VAL_GPIOGODR 0xFFFFF7FF
  221. #if !defined(_FROM_ASM_)
  222. #ifdef __cplusplus
  223. extern "C" {
  224. #endif
  225. void boardInit(void);
  226. #ifdef __cplusplus
  227. }
  228. #endif
  229. #endif /* _FROM_ASM_ */
  230. #endif /* _BOARD_H_ */