board.c 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * Copyright (c) 2006-2024 RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2022-02-22 airm2m first version
  9. */
  10. #include "board.h"
  11. #include "drv_common.h"
  12. #include "drv_gpio.h"
  13. #include "drv_usart_v2.h"
  14. uint32_t SystemCoreClock;
  15. extern const uint32_t __isr_start_address;
  16. const uint32_t __attribute__((section (".app_info")))
  17. g_CAppInfo[256] =
  18. {
  19. __APP_START_MAGIC__,
  20. sizeof(g_CAppInfo),
  21. 0,
  22. 0,
  23. };
  24. void SystemInit(void)
  25. {
  26. #ifdef __USE_XTL__
  27. SYSCTRL->FREQ_SEL = 0x20000000 | SYSCTRL_FREQ_SEL_HCLK_DIV_1_2 | (1 << 13) | SYSCTRL_FREQ_SEL_CLOCK_SOURCE_EXT | SYSCTRL_FREQ_SEL_XTAL_192Mhz;
  28. #else
  29. SYSCTRL->FREQ_SEL = 0x20000000 | SYSCTRL_FREQ_SEL_HCLK_DIV_1_2 | (1 << 13) | SYSCTRL_FREQ_SEL_CLOCK_SOURCE_INC | SYSCTRL_FREQ_SEL_XTAL_192Mhz;
  30. #endif
  31. SCB->VTOR = (uint32_t)(&__isr_start_address);
  32. SYSCTRL->CG_CTRL1 = SYSCTRL_APBPeriph_ALL;
  33. SYSCTRL->SOFT_RST1 = SYSCTRL_APBPeriph_ALL;
  34. SYSCTRL->PHER_CTRL &= ~(1 << 20);
  35. SYSCTRL->SOFT_RST2 &= ~SYSCTRL_USB_RESET;
  36. SYSCTRL->LOCK_R |= SYSCTRL_USB_RESET;
  37. __enable_irq();
  38. }
  39. void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */
  40. {
  41. SystemCoreClock = HSE_VALUE * (((SYSCTRL->FREQ_SEL & SYSCTRL_FREQ_SEL_XTAL_Mask) >> SYSCTRL_FREQ_SEL_XTAL_Pos) + 1);
  42. }
  43. void rt_hw_board_init(void)
  44. {
  45. GPIO_Config(GPIOC_03, 0, 0);
  46. GPIO_Config(GPIOD_14, 0, 0);
  47. GPIO_Config(GPIOD_15, 0, 0);
  48. __NVIC_SetPriorityGrouping(7 - __NVIC_PRIO_BITS);
  49. SystemCoreClockUpdate();
  50. #ifdef RT_USING_HEAP
  51. rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
  52. #endif
  53. rt_hw_systick_init();
  54. DMA_GlobalInit();
  55. Uart_GlobalInit();
  56. DMA_TakeStream(DMA1_STREAM_1);/* for qspi */
  57. CoreTick_Init();
  58. #ifdef RT_USING_PIN
  59. rt_hw_pin_init();
  60. #endif
  61. /* USART driver initialization is open by default */
  62. #ifdef RT_USING_SERIAL
  63. rt_hw_usart_init();
  64. #endif
  65. /* Set the shell console output device */
  66. #if defined(RT_USING_CONSOLE) && defined(RT_USING_DEVICE)
  67. rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
  68. #endif
  69. /* Board underlying hardware initialization */
  70. #ifdef RT_USING_COMPONENTS_INIT
  71. rt_components_board_init();
  72. #endif
  73. }