clk.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. /**************************************************************************//**
  2. * @file clk.h
  3. * @version V3.0
  4. * $Revision: 17 $
  5. * $Date: 14/01/28 1:11p $
  6. * @brief M051 Series Clock Control Driver Header File
  7. *
  8. * @note
  9. * Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved.
  10. *
  11. ******************************************************************************/
  12. #ifndef __CLK_H__
  13. #define __CLK_H__
  14. #include "M051Series.h"
  15. /** @addtogroup M051_Device_Driver M051 Device Driver
  16. @{
  17. */
  18. /** @addtogroup M051_CLK_Driver CLK Driver
  19. @{
  20. */
  21. /** @addtogroup M051_CLK_EXPORTED_FUNCTIONS CLK Exported Constants
  22. @{
  23. */
  24. #define FREQ_25MHZ 25000000
  25. #define FREQ_50MHZ 50000000
  26. #define FREQ_100MHZ 100000000
  27. #define FREQ_200MHZ 200000000
  28. /*---------------------------------------------------------------------------------------------------------*/
  29. /* PWRCON constant definitions. */
  30. /*---------------------------------------------------------------------------------------------------------*/
  31. #define CLK_PWRCON_HXT_EN (0x01UL<<CLK_PWRCON_XTL12M_EN_Pos) /*!< Enable 4~24 MHz External High Speed Crystal (HXT) */
  32. #define CLK_PWRCON_HIRC_EN (0x01UL<<CLK_PWRCON_OSC22M_EN_Pos) /*!< Enable 22.1184 MHz Internal High Speed RC Oscillator (HIRC) */
  33. #define CLK_PWRCON_LIRC_EN (0x01UL<<CLK_PWRCON_OSC10K_EN_Pos) /*!< Enable 10 kHz Internal Low Speed RC Oscillator (LIRC) */
  34. /*---------------------------------------------------------------------------------------------------------*/
  35. /* CLKSEL0 constant definitions. */
  36. /*---------------------------------------------------------------------------------------------------------*/
  37. #define CLK_CLKSEL0_HCLK_S_HXT 0x00UL /*!< Setting HCLK clock source as HXT */
  38. #define CLK_CLKSEL0_HCLK_S_PLL 0x02UL /*!< Setting HCLK clock source as PLL */
  39. #define CLK_CLKSEL0_HCLK_S_LIRC 0x03UL /*!< Setting HCLK clock source as LIRC */
  40. #define CLK_CLKSEL0_HCLK_S_HIRC 0x07UL /*!< Setting HCLKclock source as HIRC */
  41. #define CLK_CLKSEL0_STCLK_S_HXT 0x00UL /*!< Setting SysTick clock source as HXT */
  42. #define CLK_CLKSEL0_STCLK_S_HXT_DIV2 0x10UL /*!< Setting SysTick clock source as HXT/2 */
  43. #define CLK_CLKSEL0_STCLK_S_HCLK_DIV2 0x18UL /*!< Setting SysTick clock source as HCLK/2 */
  44. #define CLK_CLKSEL0_STCLK_S_HIRC_DIV2 0x38UL /*!< Setting SysTick clock source as internal HIRC/2 */
  45. /*---------------------------------------------------------------------------------------------------------*/
  46. /* CLKSEL1 constant definitions. */
  47. /*---------------------------------------------------------------------------------------------------------*/
  48. #define CLK_CLKSEL1_WDT_S_HCLK_DIV2048 0x00000002UL /*!< Setting WDT clock source as HCLK/2048 */
  49. #define CLK_CLKSEL1_WDT_S_LIRC 0x00000003UL /*!< Setting WDT clock source as LIRC */
  50. #define CLK_CLKSEL1_ADC_S_HXT 0x00000000UL /*!< Setting ADC clock source as HXT */
  51. #define CLK_CLKSEL1_ADC_S_PLL 0x00000004UL /*!< Setting ADC clock source as PLL */
  52. #define CLK_CLKSEL1_ADC_S_HCLK 0x00000008UL /*!< Setting ADC clock source as HCLK */
  53. #define CLK_CLKSEL1_ADC_S_HIRC 0x0000000CUL /*!< Setting ADC clock source as HIRC */
  54. #define CLK_CLKSEL1_SPI0_S_PLL 0x00000000UL /*!< Setting SPI0 clock source as PLL */
  55. #define CLK_CLKSEL1_SPI0_S_HCLK 0x00000010UL /*!< Setting SPI0 clock source as HCLK */
  56. #define CLK_CLKSEL1_SPI1_S_PLL 0x00000000UL /*!< Setting SPI1 clock source as PLL */
  57. #define CLK_CLKSEL1_SPI1_S_HCLK 0x00000020UL /*!< Setting SPI1 clock source as HCLK */
  58. #define CLK_CLKSEL1_TMR0_S_HXT 0x00000000UL /*!< Setting Timer 0 clock source as HXT */
  59. #define CLK_CLKSEL1_TMR0_S_HCLK 0x00000200UL /*!< Setting Timer 0 clock source as HCLK */
  60. #define CLK_CLKSEL1_TMR0_S_T0 0x00000300UL /*!< Setting Timer 0 clock source as T0 */
  61. #define CLK_CLKSEL1_TMR0_S_LIRC 0x00000500UL /*!< Setting Timer 0 clock source as LIRC */
  62. #define CLK_CLKSEL1_TMR0_S_HIRC 0x00000700UL /*!< Setting Timer 0 clock source as HIRC */
  63. #define CLK_CLKSEL1_TMR1_S_HXT 0x00000000UL /*!< Setting Timer 1 clock source as HXT */
  64. #define CLK_CLKSEL1_TMR1_S_HCLK 0x00002000UL /*!< Setting Timer 1 clock source as HCLK */
  65. #define CLK_CLKSEL1_TMR1_S_T1 0x00003000UL /*!< Setting Timer 1 clock source as T1 */
  66. #define CLK_CLKSEL1_TMR1_S_LIRC 0x00005000UL /*!< Setting Timer 1 clock source as LIRC */
  67. #define CLK_CLKSEL1_TMR1_S_HIRC 0x00007000UL /*!< Setting Timer 1 clock source as HIRC */
  68. #define CLK_CLKSEL1_TMR2_S_HXT 0x00000000UL /*!< Setting Timer 2 clock source as HXT */
  69. #define CLK_CLKSEL1_TMR2_S_S_HCLK 0x00020000UL /*!< Setting Timer 2 clock source as HCLK */
  70. #define CLK_CLKSEL1_TMR2_S_T2 0x00030000UL /*!< Setting Timer 2 clock source as T2 */
  71. #define CLK_CLKSEL1_TMR2_S_LIRC 0x00050000UL /*!< Setting Timer 2 clock source as LIRC */
  72. #define CLK_CLKSEL1_TMR2_S_HIRC 0x00070000UL /*!< Setting Timer 2 clock source as HIRC */
  73. #define CLK_CLKSEL1_TMR3_S_HXT 0x00000000UL /*!< Setting Timer 3 clock source as HXT */
  74. #define CLK_CLKSEL1_TMR3_S_HCLK 0x00200000UL /*!< Setting Timer 3 clock source as HCLK */
  75. #define CLK_CLKSEL1_TMR3_S_S_T3 0x00300000UL /*!< Setting Timer 3 clock source as T3 */
  76. #define CLK_CLKSEL1_TMR3_S_LIRC 0x00500000UL /*!< Setting Timer 3 clock source as LIRC */
  77. #define CLK_CLKSEL1_TMR3_S_HIRC 0x00700000UL /*!< Setting Timer 3 clock source as HIRC */
  78. #define CLK_CLKSEL1_UART_S_HXT 0x00000000UL /*!< Setting UART clock source as HXT */
  79. #define CLK_CLKSEL1_UART_S_PLL 0x01000000UL /*!< Setting UART clock source as PLL */
  80. #define CLK_CLKSEL1_UART_S_HIRC 0x03000000UL /*!< Setting UART clock source as HIRC */
  81. #define CLK_CLKSEL1_PWM01_S_HXT 0x00000000UL /*!< Setting PWM01 clock source as HXT */
  82. #define CLK_CLKSEL1_PWM01_S_LIRC 0x10000000UL /*!< Setting PWM01 clock source as LIRC */
  83. #define CLK_CLKSEL1_PWM01_S_HCLK 0x20000000UL /*!< Setting PWM01 clock source as HCLK */
  84. #define CLK_CLKSEL1_PWM01_S_HIRC 0x30000000UL /*!< Setting PWM01 clock source as HIRC */
  85. #define CLK_CLKSEL1_PWM23_S_HXT 0x00000000UL /*!< Setting PWM23 clock source as HXT */
  86. #define CLK_CLKSEL1_PWM23_S_LIRC 0x40000000UL /*!< Setting PWM23 clock source as LIRC */
  87. #define CLK_CLKSEL1_PWM23_S_HCLK 0x80000000UL /*!< Setting PWM23 clock source as HCLK */
  88. #define CLK_CLKSEL1_PWM23_S_HIRC 0xC0000000UL /*!< Setting PWM23 clock source as HIRC */
  89. /*---------------------------------------------------------------------------------------------------------*/
  90. /* CLKSEL2 constant definitions. */
  91. /*---------------------------------------------------------------------------------------------------------*/
  92. #define CLK_CLKSEL2_FRQDIV_S_HXT 0x00000000UL /*!< Setting FRQDIV clock source as HXT */
  93. #define CLK_CLKSEL2_FRQDIV_S_LIRC 0x00000004UL /*!< Setting FRQDIV clock source as LIRC */
  94. #define CLK_CLKSEL2_FRQDIV_S_HCLK 0x00000008UL /*!< Setting FRQDIV clock source as HCLK */
  95. #define CLK_CLKSEL2_FRQDIV_S_HIRC 0x0000000CUL /*!< Setting FRQDIV clock source as HIRC */
  96. #define CLK_CLKSEL2_PWM45_S_HXT 0x00000000UL /*!< Setting PWM45 clock source as HXT */
  97. #define CLK_CLKSEL2_PWM45_S_LIRC 0x00000010UL /*!< Setting PWM45 clock source as LIRC */
  98. #define CLK_CLKSEL2_PWM45_S_HCLK 0x00000020UL /*!< Setting PWM45 clock source as HCLK */
  99. #define CLK_CLKSEL2_PWM45_S_HIRC 0x00000030UL /*!< Setting PWM45 clock source as HIRC */
  100. #define CLK_CLKSEL2_PWM67_S_HXT 0x00000000UL /*!< Setting PWM67 clock source as HXT */
  101. #define CLK_CLKSEL2_PWM67_S_LIRC 0x00000040UL /*!< Setting PWM67 clock source as LIRC */
  102. #define CLK_CLKSEL2_PWM67_S_HCLK 0x00000080UL /*!< Setting PWM67 clock source as HCLK */
  103. #define CLK_CLKSEL2_PWM67_S_HIRC 0x000000C0UL /*!< Setting PWM67 clock source as HIRC */
  104. #define CLK_CLKSEL2_WWDT_S_HCLK_DIV2048 0x00020000UL /*!< Setting WWDT clock source as HCLK/2048 */
  105. #define CLK_CLKSEL2_WWDT_S_LIRC 0x00030000UL /*!< Setting WWDT clock source as LIRC */
  106. /*---------------------------------------------------------------------------------------------------------*/
  107. /* CLKDIV constant definitions. */
  108. /*---------------------------------------------------------------------------------------------------------*/
  109. #define CLK_CLKDIV_ADC(x) (((x)-1) << 16) /*!< CLKDIV Setting for ADC clock divider. It could be 1~256 */
  110. #define CLK_CLKDIV_UART(x) (((x)-1) << 8) /*!< CLKDIV Setting for UART clock divider. It could be 1~16 */
  111. #define CLK_CLKDIV_HCLK(x) ((x)-1) /*!< CLKDIV Setting for HCLK clock divider. It could be 1~16 */
  112. /*---------------------------------------------------------------------------------------------------------*/
  113. /* PLLCON constant definitions. PLL = FIN * NF / NR / NO */
  114. /*---------------------------------------------------------------------------------------------------------*/
  115. #define CLK_PLLCON_PLL_SRC_HXT 0x00000000UL /*!< For PLL clock source is HXT. 4MHz < FIN < 24MHz */
  116. #define CLK_PLLCON_PLL_SRC_HIRC 0x00080000UL /*!< For PLL clock source is HIRC. 4MHz < FIN < 24MHz */
  117. #define CLK_PLLCON_NR(x) (((x)-2)<<9) /*!< x must be constant and 2 <= x <= 33. 1.6MHz < FIN/NR < 15MHz */
  118. #define CLK_PLLCON_NF(x) ((x)-2) /*!< x must be constant and 2 <= x <= 513. 100MHz < FIN*NF/NR < 200MHz. (120MHz < FIN*NF/NR < 200MHz is preferred.) */
  119. #define CLK_PLLCON_NO_1 0x0000UL /*!< For output divider is 1 */
  120. #define CLK_PLLCON_NO_2 0x4000UL /*!< For output divider is 2 */
  121. #define CLK_PLLCON_NO_4 0xC000UL /*!< For output divider is 4 */
  122. #define CLK_PLLCON_50MHz_HXT (CLK_PLLCON_PLL_SRC_HXT | CLK_PLLCON_NR(3) | CLK_PLLCON_NF( 25) | CLK_PLLCON_NO_2) /*!< Predefined PLLCON setting for 50MHz PLL output with 12MHz X'tal */
  123. #define CLK_PLLCON_50MHz_HIRC (CLK_PLLCON_PLL_SRC_HIRC | CLK_PLLCON_NR(13) | CLK_PLLCON_NF( 59) | CLK_PLLCON_NO_2) /*!< Predefined PLLCON setting for 50.1918MHz PLL output with 22.1184MHz IRC */
  124. /*---------------------------------------------------------------------------------------------------------*/
  125. /* MODULE constant definitions. */
  126. /*---------------------------------------------------------------------------------------------------------*/
  127. #define MODULE_APBCLK(x) ((x >>31) & 0x1) /*!< Calculate APBCLK offset on MODULE index */
  128. #define MODULE_CLKSEL(x) ((x >>29) & 0x3) /*!< Calculate CLKSEL offset on MODULE index */
  129. #define MODULE_CLKSEL_Msk(x) ((x >>25) & 0xf) /*!< Calculate CLKSEL mask offset on MODULE index */
  130. #define MODULE_CLKSEL_Pos(x) ((x >>20) & 0x1f) /*!< Calculate CLKSEL position offset on MODULE index */
  131. #define MODULE_CLKDIV(x) ((x >>18) & 0x3) /*!< Calculate APBCLK CLKDIV on MODULE index */
  132. #define MODULE_CLKDIV_Msk(x) ((x >>10) & 0xff) /*!< Calculate CLKDIV mask offset on MODULE index */
  133. #define MODULE_CLKDIV_Pos(x) ((x >>5 ) & 0x1f) /*!< Calculate CLKDIV position offset on MODULE index */
  134. #define MODULE_IP_EN_Pos(x) ((x >>0 ) & 0x1f) /*!< Calculate APBCLK offset on MODULE index */
  135. #define MODULE_NoMsk 0x0 /*!< Not mask on MODULE index */
  136. /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
  137. /* APBCLK(31)|CLKSEL(30:29)|CLKSEL_Msk(28:25) |CLKSEL_Pos(24:20)|CLKDIV(19:18)|CLKDIV_Msk(17:10)|CLKDIV_Pos(9:5)|IP_EN_Pos(4:0)*/
  138. /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
  139. #define WDT_MODULE ((0x0<<31)|(0x1<<29) |(0x3<<25) |( 0<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_WDT_EN_Pos ) /*!< WDT Module */
  140. #define TMR0_MODULE ((0x0<<31)|(0x1<<29) |(0x7<<25) |( 8<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_TMR0_EN_Pos) /*!< TMR0 Module */
  141. #define TMR1_MODULE ((0x0<<31)|(0x1<<29) |(0x7<<25) |(12<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_TMR1_EN_Pos) /*!< TMR1 Module */
  142. #define TMR2_MODULE ((0x0<<31)|(0x1<<29) |(0x7<<25) |(16<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_TMR0_EN_Pos) /*!< TMR2 Module */
  143. #define TMR3_MODULE ((0x0<<31)|(0x1<<29) |(0x7<<25) |(20<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_TMR1_EN_Pos) /*!< TMR3 Module */
  144. #define FDIV_MODULE ((0x0<<31)|(0x3<<29) |(0x3<<25) |( 2<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_FDIV_EN_Pos) /*!< FDIV Module */
  145. #define I2C0_MODULE ((0x0<<31) |(MODULE_NoMsk<<25) |(MODULE_NoMsk<<10) |CLK_APBCLK_I2C0_EN_Pos) /*!< I2C0 Module */
  146. #define I2C1_MODULE ((0x0<<31) |(MODULE_NoMsk<<25) |(MODULE_NoMsk<<10) |CLK_APBCLK_I2C1_EN_Pos) /*!< I2C1 Module */
  147. #define SPI0_MODULE ((0x0<<31)|(0x1<<29) |(0x1<<25) |( 4<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_SPI0_EN_Pos) /*!< SPI0 Module */
  148. #define SPI1_MODULE ((0x0<<31)|(0x1<<29) |(0x1<<25) |( 5<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_SPI1_EN_Pos) /*!< SPI1 Module */
  149. #define UART0_MODULE ((0x0<<31)|(0x1<<29) |(0x3<<25) |(24<<20) |(0x0<<18) |(0x0F<<10) |( 8<<5) |CLK_APBCLK_UART0_EN_Pos) /*!< UART0 Module */
  150. #define UART1_MODULE ((0x0<<31)|(0x1<<29) |(0x3<<25) |(24<<20) |(0x0<<18) |(0x0F<<10) |( 8<<5) |CLK_APBCLK_UART1_EN_Pos) /*!< UART1 Module */
  151. #define PWM01_MODULE ((0x0<<31)|(0x1<<29) |(0x3<<25) |(28<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_PWM01_EN_Pos) /*!< PWM01 Module */
  152. #define PWM23_MODULE ((0x0<<31)|(0x1<<29) |(0x3<<25) |(30<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_PWM23_EN_Pos) /*!< PWM23 Module */
  153. #define PWM45_MODULE ((0x0<<31)|(0x3<<29) |(0x3<<25) |( 4<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_PWM45_EN_Pos) /*!< PWM45 Module */
  154. #define PWM67_MODULE ((0x0<<31)|(0x3<<29) |(0x3<<25) |( 6<<20) |(MODULE_NoMsk<<10) |CLK_APBCLK_PWM67_EN_Pos) /*!< PWM67 Module */
  155. #define ADC_MODULE ((0x0<<31)|(0x1<<29) |(0x3<<25) |( 2<<20) |(0x0<<18) |(0xFF<<10) |(16<<5) |CLK_APBCLK_ADC_EN_Pos) /*!< ADC Module */
  156. #define ACMP01_MODULE ((0x0<<31) |(MODULE_NoMsk<<25) |(MODULE_NoMsk<<10) |CLK_APBCLK_ACMP01_EN_Pos) /*!< ACMP01 Module */
  157. #define ACMP23_MODULE ((0x0<<31) |(MODULE_NoMsk<<25) |(MODULE_NoMsk<<10) |CLK_APBCLK_ACMP23_EN_Pos) /*!< ACMP23 Module */
  158. #define WWDT_MODULE ((MODULE_NoMsk<<31)|(0x3<<29)|(0x3<<25) |(16<<20) |(MODULE_NoMsk<<10) |MODULE_NoMsk ) /*!< WWDT Module */
  159. /*@}*/ /* end of group M051_CLK_EXPORTED_CONSTANTS */
  160. /** @addtogroup M051_CLK_EXPORTED_FUNCTIONS CLK Exported Functions
  161. @{
  162. */
  163. /**
  164. * @brief This function get PLL frequency. The frequency unit is Hz.
  165. * @return PLL frequency
  166. */
  167. static __INLINE uint32_t CLK_GetPLLClockFreq(void)
  168. {
  169. uint32_t u32PllFreq = 0, u32PllReg;
  170. uint32_t u32FIN, u32NF, u32NR, u32NO;
  171. uint8_t au8NoTbl[4] = {1, 2, 2, 4};
  172. u32PllReg = CLK->PLLCON;
  173. if(u32PllReg & (CLK_PLLCON_PD_Msk | CLK_PLLCON_OE_Msk))
  174. return 0; /* PLL is in power down mode or fix low */
  175. if(u32PllReg & CLK_PLLCON_PLL_SRC_HIRC)
  176. u32FIN = __HIRC; /* PLL source clock from HIRC */
  177. else
  178. u32FIN = __HXT; /* PLL source clock from HXT */
  179. if(u32PllReg & CLK_PLLCON_BP_Msk)
  180. return u32FIN; /* PLL is in bypass mode */
  181. /* PLL is output enabled in normal work mode */
  182. u32NO = au8NoTbl[((u32PllReg & CLK_PLLCON_OUT_DV_Msk) >> CLK_PLLCON_OUT_DV_Pos)];
  183. u32NF = ((u32PllReg & CLK_PLLCON_FB_DV_Msk) >> CLK_PLLCON_FB_DV_Pos) + 2;
  184. u32NR = ((u32PllReg & CLK_PLLCON_IN_DV_Msk) >> CLK_PLLCON_IN_DV_Pos) + 2;
  185. /* u32FIN is shifted 2 bits to avoid overflow */
  186. u32PllFreq = (((u32FIN >> 2) * u32NF) / (u32NR * u32NO) << 2);
  187. return u32PllFreq;
  188. }
  189. /**
  190. * @brief This function execute delay function.
  191. * @param us Delay time. The Max value is 2^24 / CPU Clock(MHz). Ex:
  192. * 50MHz => 335544us, 48MHz => 349525us, 28MHz => 699050us ...
  193. * @return None
  194. * @details Use the SysTick to generate the delay time and the UNIT is in us.
  195. * The SysTick clock source is from HCLK, i.e the same as system core clock.
  196. */
  197. static __INLINE void CLK_SysTickDelay(uint32_t us)
  198. {
  199. SysTick->LOAD = us * CyclesPerUs;
  200. SysTick->VAL = (0x00);
  201. SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;
  202. /* Waiting for down-count to zero */
  203. while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
  204. }
  205. void CLK_DisableCKO(void);
  206. void CLK_EnableCKO(uint32_t u32ClkSrc, uint32_t u32ClkDiv, uint32_t u32ClkDivBy1En);
  207. void CLK_PowerDown(void);
  208. void CLK_Idle(void);
  209. uint32_t CLK_GetHXTFreq(void);
  210. uint32_t CLK_GetLXTFreq(void);
  211. uint32_t CLK_GetHCLKFreq(void);
  212. uint32_t CLK_GetPCLKFreq(void);
  213. uint32_t CLK_GetCPUFreq(void);
  214. uint32_t CLK_SetCoreClock(uint32_t u32Hclk);
  215. void CLK_SetHCLK(uint32_t u32ClkSrc, uint32_t u32ClkDiv);
  216. void CLK_SetModuleClock(uint32_t u32ModuleIdx, uint32_t u32ClkSrc, uint32_t u32ClkDiv);
  217. void CLK_SetSysTickClockSrc(uint32_t u32ClkSrc);
  218. void CLK_EnableXtalRC(uint32_t u32ClkMask);
  219. void CLK_DisableXtalRC(uint32_t u32ClkMask);
  220. void CLK_EnableModuleClock(uint32_t u32ModuleIdx);
  221. void CLK_DisableModuleClock(uint32_t u32ModuleIdx);
  222. uint32_t CLK_EnablePLL(uint32_t u32PllClkSrc, uint32_t u32PllFreq);
  223. void CLK_DisablePLL(void);
  224. void CLK_WaitClockReady(uint32_t u32ClkMask);
  225. /*@}*/ /* end of group M051_CLK_EXPORTED_FUNCTIONS */
  226. /*@}*/ /* end of group M051_CLK_Driver */
  227. /*@}*/ /* end of group M051_Device_Driver */
  228. #endif //__CLK_H__
  229. /*** (C) COPYRIGHT 2013 Nuvoton Technology Corp. ***/