sysinit.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /*****************************************************************************
  2. * @brief provide system init routine/configuration for NV32Fxx.
  3. *
  4. *******************************************************************************/
  5. #include "common.h"
  6. #include "sysinit.h"
  7. #include "sim.h"
  8. #include "uart.h"
  9. #include "ics.h"
  10. /********************************************************************/
  11. uint16_t global_pass_count = 0;
  12. uint16_t global_fail_count = 0;
  13. void print_sys_log(void);
  14. void UART_InitPrint(void);
  15. /*****************************************************************************//*!
  16. +FUNCTION----------------------------------------------------------------
  17. * @function name: sysinit
  18. *
  19. * @brief initalize system including SIM, ICS, UART, etc
  20. *
  21. * @param none
  22. *
  23. * @return none
  24. *
  25. * @ Pass/ Fail criteria: none
  26. *****************************************************************************/
  27. void sysinit (void)
  28. {
  29. SIM_ConfigType sSIMConfig = {{0}, 0};
  30. ICS_ConfigType sICSConfig = {0};
  31. /* initialize the Pass/Fail counts to 0 */
  32. global_pass_count = 0;
  33. global_fail_count = 0;
  34. EFMCR &= 0xFFFF0001; // set wait state 1
  35. #if defined(TRIM_IRC)
  36. /* if not trimmed, do trim first */
  37. ICS_Trim(ICS_TRIM_VALUE);
  38. #endif
  39. /*
  40. * Enable SWD pin, RESET pin
  41. */
  42. /*
  43. * NOTE: please make sure other register bits are also write-once and
  44. * need add other bit mask here if needed.
  45. */
  46. #if defined(SPI0_PINREMAP)
  47. sSIMConfig.u32PinSel |= SIM_PINSEL_SPI0PS_MASK;
  48. #endif
  49. #if defined(OUTPUT_BUSCLK)
  50. sSIMConfig.sBits.bEnableCLKOUT = 1; /* output bus clock if enabled */
  51. #endif
  52. #if defined(DISABLE_NMI)
  53. sSIMConfig.sBits.bDisableNMI = 1;
  54. #endif
  55. #if !defined(CPU_NV32M3)
  56. /* make sure clocks to peripheral modules are enabled */
  57. sSIMConfig.u32SCGC |= SIM_SCGC_SWD_MASK | SIM_SCGC_FLASH_MASK |
  58. SIM_SCGC_UART0_MASK | SIM_SCGC_UART1_MASK |
  59. SIM_SCGC_UART2_MASK
  60. ;
  61. #else
  62. sSIMConfig.u32SCGC |= SIM_SCGC_SWD_MASK | SIM_SCGC_FLASH_MASK |
  63. SIM_SCGC_UART0_MASK
  64. ;
  65. #endif
  66. #if !defined(CPU_NV32)
  67. /* bus clock divided by 2 */
  68. // sSIMConfig.u32BusDiv |= SIM_CLKDIV_OUTDIV2_MASK;
  69. #endif
  70. // sSIMConfig.sBits.bBusDiv |= SIM_BUSDIV_BUSDIV_MASK;
  71. SIM_Init(&sSIMConfig); /* initialize SIM */
  72. #if defined(XOSC_STOP_ENABLE)
  73. sICSConfig.oscConfig.bStopEnable = 1; /* enabled in stop mode */
  74. #endif
  75. #if defined(CRYST_HIGH_GAIN)
  76. sICSConfig.oscConfig.bGain = 1; /* high gain */
  77. #endif
  78. #if (EXT_CLK_FREQ_KHZ >=4000)
  79. sICSConfig.oscConfig.bRange = 1; /* high range */
  80. #endif
  81. sICSConfig.oscConfig.bEnable = 1; /* enable OSC */
  82. sICSConfig.u32ClkFreq = EXT_CLK_FREQ_KHZ;
  83. #if defined(USE_FEE)
  84. sICSConfig.u8ClkMode = ICS_CLK_MODE_FEE;
  85. #elif defined(USE_FBE_OSC)
  86. sICSConfig.u8ClkMode = ICS_CLK_MODE_FBE_OSC;
  87. #elif defined(USE_FEE_OSC)
  88. sICSConfig.u8ClkMode = ICS_CLK_MODE_FEE_OSC;
  89. #elif defined(USE_FBILP)
  90. sICSConfig.u8ClkMode = ICS_CLK_MODE_FBILP;
  91. #elif defined(USE_FBELP)
  92. sICSConfig.u8ClkMode = ICS_CLK_MODE_FBELP;
  93. #endif
  94. ICS_Init(&sICSConfig); /* initialize ICS */
  95. }
  96. void NMI_Handler(void)
  97. {
  98. while(1);
  99. }