board.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. /*
  2. * Copyright (c) 2006-2020, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2020-08-08 RealThread first version
  9. */
  10. #ifndef __BOARD_H__
  11. #define __BOARD_H__
  12. #include <rtthread.h>
  13. #include <stm32f1xx.h>
  14. #include "drv_common.h"
  15. #ifdef __cplusplus
  16. extern "C"
  17. {
  18. #endif
  19. /*-------------------------- CHIP CONFIG BEGIN --------------------------*/
  20. #define CHIP_FAMILY_STM32
  21. #define CHIP_SERIES_STM32F1
  22. #define CHIP_NAME_STM32F103RE
  23. /*-------------------------- CHIP CONFIG END --------------------------*/
  24. /*-------------------------- ROM/RAM CONFIG BEGIN --------------------------*/
  25. #define ROM_START ((uint32_t)0x08000000)
  26. #define ROM_SIZE (512)
  27. #define ROM_END ((uint32_t)(ROM_START + ROM_SIZE * 1024))
  28. #define RAM_START (0x20000000)
  29. #define RAM_SIZE (64)
  30. #define RAM_END (RAM_START + RAM_SIZE * 1024)
  31. /*-------------------------- ROM/RAM CONFIG END --------------------------*/
  32. /*-------------------------- CLOCK CONFIG BEGIN --------------------------*/
  33. #define BSP_CLOCK_SOURCE ("HSI")
  34. #define BSP_CLOCK_SOURCE_FREQ_MHZ ((int32_t)0)
  35. #define BSP_CLOCK_SYSTEM_FREQ_MHZ ((int32_t)72)
  36. /*-------------------------- CLOCK CONFIG END --------------------------*/
  37. /*-------------------------- UART CONFIG BEGIN --------------------------*/
  38. /** After configuring corresponding UART or UART DMA, you can use it.
  39. *
  40. * STEP 1, define macro define related to the serial port opening based on the serial port number
  41. * such as #define BSP_USING_UATR1
  42. *
  43. * STEP 2, according to the corresponding pin of serial port, define the related serial port information macro
  44. * such as #define BSP_UART1_TX_PIN "PA9"
  45. * #define BSP_UART1_RX_PIN "PA10"
  46. *
  47. * STEP 3, if you want using SERIAL DMA, you must open it in the RT-Thread Settings.
  48. * RT-Thread Setting -> Components -> Device Drivers -> Serial Device Drivers -> Enable Serial DMA Mode
  49. *
  50. * STEP 4, according to serial port number to define serial port tx/rx DMA function in the board.h file
  51. * such as #define BSP_UART1_RX_USING_DMA
  52. *
  53. */
  54. #define BSP_UART4_RX_USING_DMA //屏幕
  55. #define BSP_USING_UART1
  56. #define BSP_UART1_TX_PIN "PA9"
  57. #define BSP_UART1_RX_PIN "PA10"
  58. #define BSP_USING_UART2
  59. #define BSP_UART2_TX_PIN "PA2"
  60. #define BSP_UART2_RX_PIN "PA3"
  61. #define BSP_USING_UART4
  62. #define BSP_UART4_TX_PIN "PC10"
  63. #define BSP_UART4_RX_PIN "PC11"
  64. /*-------------------------- UART CONFIG END --------------------------*/
  65. /*-------------------------- I2C CONFIG BEGIN --------------------------*/
  66. /** if you want to use i2c bus(soft simulate) you can use the following instructions.
  67. *
  68. * STEP 1, open i2c driver framework(soft simulate) support in the RT-Thread Settings file
  69. *
  70. * STEP 2, define macro related to the i2c bus
  71. * such as #define BSP_USING_I2C1
  72. *
  73. * STEP 3, according to the corresponding pin of i2c port, modify the related i2c port and pin information
  74. * such as #define BSP_I2C1_SCL_PIN GET_PIN(port, pin) -> GET_PIN(C, 11)
  75. * #define BSP_I2C1_SDA_PIN GET_PIN(port, pin) -> GET_PIN(C, 12)
  76. */
  77. /*#define BSP_USING_I2C1*/
  78. #ifdef BSP_USING_I2C1
  79. #define BSP_I2C1_SCL_PIN GET_PIN(port, pin)
  80. #define BSP_I2C1_SDA_PIN GET_PIN(port, pin)
  81. #endif
  82. /*#define BSP_USING_I2C2*/
  83. #ifdef BSP_USING_I2C2
  84. #define BSP_I2C2_SCL_PIN GET_PIN(port, pin)
  85. #define BSP_I2C2_SDA_PIN GET_PIN(port, pin)
  86. #endif
  87. /*-------------------------- I2C CONFIG END --------------------------*/
  88. /*-------------------------- SPI CONFIG BEGIN --------------------------*/
  89. /** if you want to use spi bus you can use the following instructions.
  90. *
  91. * STEP 1, open spi driver framework support in the RT-Thread Settings file
  92. *
  93. * STEP 2, define macro related to the spi bus
  94. * such as #define BSP_USING_SPI1
  95. *
  96. * STEP 3, copy your spi init function from stm32xxxx_hal_msp.c generated by stm32cubemx to the end of board.c file
  97. * such as void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
  98. *
  99. * STEP 4, modify your stm32xxxx_hal_config.h file to support spi peripherals. define macro related to the peripherals
  100. * such as #define HAL_SPI_MODULE_ENABLED
  101. */
  102. #define BSP_USING_SPI1
  103. /*#define BSP_USING_SPI2*/
  104. /*#define BSP_USING_SPI3*/
  105. /*-------------------------- SPI CONFIG END --------------------------*/
  106. /*-------------------------- QSPI CONFIG BEGIN --------------------------*/
  107. /** if you want to use qspi you can use the following instructions.
  108. *
  109. * STEP 1, open qspi driver framework support in the RT-Thread Settings file
  110. *
  111. * STEP 2, define macro related to the qspi
  112. * such as #define BSP_USING_QSPI
  113. *
  114. * STEP 3, copy your qspi init function from stm32xxxx_hal_msp.c generated by stm32cubemx to the end of board.c file
  115. * such as void HAL_QSPI_MspInit(QSPI_HandleTypeDef* hqspi)
  116. *
  117. * STEP 4, modify your stm32xxxx_hal_config.h file to support qspi peripherals. define macro related to the peripherals
  118. * such as #define HAL_QSPI_MODULE_ENABLED
  119. *
  120. */
  121. /*#define BSP_USING_QSPI*/
  122. /*-------------------------- QSPI CONFIG END --------------------------*/
  123. /*-------------------------- PWM CONFIG BEGIN --------------------------*/
  124. /** if you want to use pwm you can use the following instructions.
  125. *
  126. * STEP 1, open pwm driver framework support in the RT-Thread Settings file
  127. *
  128. * STEP 2, define macro related to the pwm
  129. * such as #define BSP_USING_PWM1
  130. *
  131. * STEP 3, copy your pwm timer init function from stm32xxxx_hal_msp.c generated by stm32cubemx to the end if board.c file
  132. * such as void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) and
  133. * void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
  134. *
  135. * STEP 4, modify your stm32xxxx_hal_config.h file to support pwm peripherals. define macro related to the peripherals
  136. * such as #define HAL_TIM_MODULE_ENABLED
  137. *
  138. */
  139. /*#define BSP_USING_PWM1*/
  140. /*#define BSP_USING_PWM2*/
  141. /*#define BSP_USING_PWM3*/
  142. /*-------------------------- PWM CONFIG END --------------------------*/
  143. /*-------------------------- ADC CONFIG BEGIN --------------------------*/
  144. /** if you want to use adc you can use the following instructions.
  145. *
  146. * STEP 1, open adc driver framework support in the RT-Thread Settings file
  147. *
  148. * STEP 2, define macro related to the adc
  149. * such as #define BSP_USING_ADC1
  150. *
  151. * STEP 3, copy your adc init function from stm32xxxx_hal_msp.c generated by stm32cubemx to the end of board.c file
  152. * such as void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
  153. *
  154. * STEP 4, modify your stm32xxxx_hal_config.h file to support adc peripherals. define macro related to the peripherals
  155. * such as #define HAL_ADC_MODULE_ENABLED
  156. *
  157. */
  158. /*#define BSP_USING_ADC1*/
  159. /*#define BSP_USING_ADC2*/
  160. /*#define BSP_USING_ADC3*/
  161. /*-------------------------- ADC CONFIG END --------------------------*/
  162. /*-------------------------- WDT CONFIG BEGIN --------------------------*/
  163. /** if you want to use wdt you can use the following instructions.
  164. *
  165. * STEP 1, open wdt driver framework support in the RT-Thread Settings file
  166. *
  167. * STEP 2, modify your stm32xxxx_hal_config.h file to support wdt peripherals. define macro related to the peripherals
  168. * such as #define HAL_IWDG_MODULE_ENABLED
  169. *
  170. */
  171. /*-------------------------- WDT CONFIG END --------------------------*/
  172. /*-------------------------- HARDWARE TIMER CONFIG BEGIN --------------------------*/
  173. /** if you want to use hardware timer you can use the following instructions.
  174. *
  175. * STEP 1, open hwtimer driver framework support in the RT-Thread Settings file
  176. *
  177. * STEP 2, define macro related to the hwtimer
  178. * such as #define BSP_USING_TIM and
  179. * #define BSP_USING_TIM1
  180. *
  181. * STEP 3, copy your hardwire timer init function from stm32xxxx_hal_msp.c generated by stm32cubemx to the end of board.c file
  182. * such as void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
  183. *
  184. * STEP 4, modify your stm32xxxx_hal_config.h file to support hardwere timer peripherals. define macro related to the peripherals
  185. * such as #define HAL_TIM_MODULE_ENABLED
  186. *
  187. */
  188. /*#define BSP_USING_TIM*/
  189. #ifdef BSP_USING_TIM
  190. /*#define BSP_USING_TIM15*/
  191. /*#define BSP_USING_TIM16*/
  192. /*#define BSP_USING_TIM17*/
  193. #endif
  194. /*-------------------------- HAREWARE TIMER CONFIG END --------------------------*/
  195. /*-------------------------- RTC CONFIG BEGIN --------------------------*/
  196. /** if you want to use rtc(hardware) you can use the following instructions.
  197. *
  198. * STEP 1, open rtc driver framework(hardware) support in the RT-Thread Settings file
  199. *
  200. * STEP 2, define macro related to the rtc
  201. * such as BSP_USING_ONCHIP_RTC
  202. *
  203. * STEP 3, modify your stm32xxxx_hal_config.h file to support rtc peripherals. define macro related to the peripherals
  204. * such as #define HAL_RTC_MODULE_ENABLED
  205. *
  206. */
  207. /*#define BSP_USING_ONCHIP_RTC*/
  208. /*-------------------------- RTC CONFIG END --------------------------*/
  209. /*-------------------------- SDIO CONFIG BEGIN --------------------------*/
  210. /** if you want to use sdio you can use the following instructions.
  211. *
  212. * STEP 1, open sdio driver framework support in the RT-Thread Settings file
  213. *
  214. * STEP 2, define macro related to the sdio
  215. * such as BSP_USING_SDIO
  216. *
  217. * STEP 3, copy your sdio init function from stm32xxxx_hal_msp.c generated by stm32cubemx to the end of board.c file
  218. * such as void HAL_SD_MspInit(SD_HandleTypeDef* hsd)
  219. *
  220. * STEP 4, modify your stm32xxxx_hal_config.h file to support sdio peripherals. define macro related to the peripherals
  221. * such as #define HAL_SD_MODULE_ENABLED
  222. *
  223. * STEP 5, config your device file system or another applications
  224. *
  225. */
  226. /*#define BSP_USING_SDIO*/
  227. /*-------------------------- SDIO CONFIG END --------------------------*/
  228. /*-------------------------- ETH CONFIG BEGIN --------------------------*/
  229. /** if you want to use eth you can use the following instructions.
  230. *
  231. * STEP 1, define macro related to the eth
  232. * such as BSP_USING_ETH
  233. *
  234. * STEP 2, copy your eth init function from stm32xxxx_hal_msp.c generated by stm32cubemx to the end if board.c file
  235. * such as void HAL_ETH_MspInit(ETH_HandleTypeDef* heth)
  236. *
  237. * STEP 3, modify your stm32xxxx_hal_config.h file to support eth peripherals. define macro related to the peripherals
  238. * such as #define HAL_ETH_MODULE_ENABLED
  239. *
  240. * STEP 4, config your phy type
  241. * such as #define PHY_USING_LAN8720A
  242. * #define PHY_USING_DM9161CEP
  243. * #define PHY_USING_DP83848C
  244. * STEP 5, implement your phy reset function in the end of board.c file
  245. * void phy_reset(void)
  246. *
  247. * STEP 6, config your lwip or other network stack
  248. *
  249. */
  250. /*#define BSP_USING_ETH*/
  251. #ifdef BSP_USING_ETH
  252. /*#define PHY_USING_LAN8720A*/
  253. /*#define PHY_USING_DM9161CEP*/
  254. /*#define PHY_USING_DP83848C*/
  255. #endif
  256. /*-------------------------- ETH CONFIG END --------------------------*/
  257. /*-------------------------- USB HOST CONFIG BEGIN --------------------------*/
  258. /** if you want to use usb host you can use the following instructions.
  259. *
  260. * STEP 1, open usb host driver framework support in the RT-Thread Settings file
  261. *
  262. * STEP 2, define macro related to the usb host
  263. * such as BSP_USING_USBHOST
  264. *
  265. * STEP 3, copy your usb host init function from stm32xxxx_hal_msp.c generated by stm32cubemx to the end of board.c file
  266. * such as void HAL_HCD_MspInit(HCD_HandleTypeDef* hhcd)
  267. *
  268. * STEP 4, config your usb peripheral clock in SystemClock_Config() generated by STM32CubeMX and replace this function in board.c
  269. *
  270. * STEP 5, modify your stm32xxxx_hal_config.h file to support usb host peripherals. define macro related to the peripherals
  271. * such as #define HAL_HCD_MODULE_ENABLED
  272. *
  273. */
  274. /*#define BSP_USING_USBHOST*/
  275. /*-------------------------- USB HOST CONFIG END --------------------------*/
  276. /*-------------------------- USB DEVICE CONFIG BEGIN --------------------------*/
  277. /** if you want to use usb device you can use the following instructions.
  278. *
  279. * STEP 1, open usb device driver framework support in the RT-Thread Settings file
  280. *
  281. * STEP 2 define macro related to the usb device
  282. * such as BSP_USING_USBDEVICE
  283. *
  284. * STEP 3, copy your usb device init function from stm32xxxx_hal_msp.c generated by stm32cubemx to the end of board.c file
  285. * such as void HAL_PCD_MspInit(PCD_HandleTypeDef* hpcd)
  286. *
  287. * STEP 4, config your usb peripheral clock in SystemClock_Config() generated by STM32CubeMX and replace this function in board.c
  288. *
  289. * STEP 5, modify your stm32xxxx_hal_config.h file to support usb device peripherals. define macro related to the peripherals
  290. * such as #define HAL_PCD_MODULE_ENABLED
  291. *
  292. */
  293. /*#define BSP_USING_USBDEVICE*/
  294. /*-------------------------- USB DEVICE CONFIG END --------------------------*/
  295. /*-------------------------- ON_CHIP_FLASH CONFIG BEGIN --------------------------*/
  296. /** if you want to use on chip flash you can use the following instructions.
  297. *
  298. * STEP 1 define macro related to the on chip flash
  299. * such as BSP_USING_ON_CHIP_FLASH
  300. *
  301. * STEP 2, modify your stm32xxxx_hal_config.h file to support on chip flash peripherals. define macro related to the peripherals
  302. * such as #define HAL_FLASH_MODULE_ENABLED
  303. *
  304. */
  305. #define BSP_USING_ON_CHIP_FLASH
  306. /*#define BSP_USING_ON_CHIP_FLASH*/
  307. /*-------------------------- ON_CHIP_FLASH CONFIG END --------------------------*/
  308. #ifdef __cplusplus
  309. }
  310. #endif
  311. #endif /* __BOARD_H__ */