board.c 2.1 KB

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