nutool_modclkcfg.c 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  1. /****************************************************************************
  2. * @file nutool_modclkcfg.c
  3. * @version V1.05
  4. * @Date 2020/09/30-13:56:58
  5. * @brief NuMicro generated code file
  6. *
  7. * SPDX-License-Identifier: Apache-2.0
  8. *
  9. * Copyright (C) 2013-2020 Nuvoton Technology Corp. All rights reserved.
  10. *****************************************************************************/
  11. /********************
  12. MCU:M032SE3AE(ULQFP64)
  13. Base Clocks:
  14. LIRC:38.4000kHz
  15. HIRC:48MHz
  16. LXT:32.7680kHz
  17. HXT:12MHz
  18. PLL:72MHz
  19. HCLK:48MHz
  20. PCLK0:48MHz
  21. PCLK1:48MHz
  22. Enabled-Module Frequencies:
  23. ACMP01=Bus Clock(PCLK1):48MHz
  24. ADC=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
  25. CRC=Bus Clock(HCLK):48MHz
  26. EBI=Bus Clock(HCLK):48MHz
  27. HDIV=Bus Clock(HCLK):48MHz
  28. I2C0=Bus Clock(PCLK0):48MHz
  29. I2C1=Bus Clock(PCLK1):48MHz
  30. ISP=Bus Clock(HCLK):48MHz/Engine Clock:48MHz
  31. PDMA=Bus Clock(HCLK):48MHz
  32. PWM0=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
  33. PWM1=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
  34. SPI0=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
  35. SYSTICK=Bus Clock(HCLK):48MHz/Engine Clock:24MHz
  36. TMR0=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
  37. TMR1=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
  38. TMR2=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
  39. TMR3=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
  40. UART0=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
  41. UART1=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
  42. UART2=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
  43. USBD=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
  44. USCI0=Bus Clock(PCLK0):48MHz
  45. WDT=Bus Clock(PCLK0):48MHz/Engine Clock:38.4000kHz
  46. WWDT=Bus Clock(PCLK0):48MHz/Engine Clock:23.4375kHz
  47. ********************/
  48. #include "M031Series.h"
  49. void nutool_modclkcfg_init_acmp01(void)
  50. {
  51. CLK_EnableModuleClock(ACMP01_MODULE);
  52. return;
  53. }
  54. void nutool_modclkcfg_deinit_acmp01(void)
  55. {
  56. CLK_DisableModuleClock(ACMP01_MODULE);
  57. return;
  58. }
  59. void nutool_modclkcfg_init_adc(void)
  60. {
  61. CLK_EnableModuleClock(ADC_MODULE);
  62. CLK_SetModuleClock(ADC_MODULE, CLK_CLKSEL2_ADCSEL_PCLK1, CLK_CLKDIV0_ADC(1));
  63. return;
  64. }
  65. void nutool_modclkcfg_deinit_adc(void)
  66. {
  67. CLK_DisableModuleClock(ADC_MODULE);
  68. return;
  69. }
  70. void nutool_modclkcfg_init_crc(void)
  71. {
  72. CLK_EnableModuleClock(CRC_MODULE);
  73. return;
  74. }
  75. void nutool_modclkcfg_deinit_crc(void)
  76. {
  77. CLK_DisableModuleClock(CRC_MODULE);
  78. return;
  79. }
  80. void nutool_modclkcfg_init_ebi(void)
  81. {
  82. CLK_EnableModuleClock(EBI_MODULE);
  83. return;
  84. }
  85. void nutool_modclkcfg_deinit_ebi(void)
  86. {
  87. CLK_DisableModuleClock(EBI_MODULE);
  88. return;
  89. }
  90. void nutool_modclkcfg_init_hdiv(void)
  91. {
  92. CLK_EnableModuleClock(HDIV_MODULE);
  93. return;
  94. }
  95. void nutool_modclkcfg_deinit_hdiv(void)
  96. {
  97. CLK_DisableModuleClock(HDIV_MODULE);
  98. return;
  99. }
  100. void nutool_modclkcfg_init_i2c0(void)
  101. {
  102. CLK_EnableModuleClock(I2C0_MODULE);
  103. return;
  104. }
  105. void nutool_modclkcfg_deinit_i2c0(void)
  106. {
  107. CLK_DisableModuleClock(I2C0_MODULE);
  108. return;
  109. }
  110. void nutool_modclkcfg_init_i2c1(void)
  111. {
  112. CLK_EnableModuleClock(I2C1_MODULE);
  113. return;
  114. }
  115. void nutool_modclkcfg_deinit_i2c1(void)
  116. {
  117. CLK_DisableModuleClock(I2C1_MODULE);
  118. return;
  119. }
  120. void nutool_modclkcfg_init_isp(void)
  121. {
  122. CLK_EnableModuleClock(ISP_MODULE);
  123. return;
  124. }
  125. void nutool_modclkcfg_deinit_isp(void)
  126. {
  127. CLK_DisableModuleClock(ISP_MODULE);
  128. return;
  129. }
  130. void nutool_modclkcfg_init_pdma(void)
  131. {
  132. CLK_EnableModuleClock(PDMA_MODULE);
  133. return;
  134. }
  135. void nutool_modclkcfg_deinit_pdma(void)
  136. {
  137. CLK_DisableModuleClock(PDMA_MODULE);
  138. return;
  139. }
  140. void nutool_modclkcfg_init_pwm0(void)
  141. {
  142. CLK_EnableModuleClock(PWM0_MODULE);
  143. CLK_SetModuleClock(PWM0_MODULE, CLK_CLKSEL2_PWM0SEL_PCLK0, MODULE_NoMsk);
  144. return;
  145. }
  146. void nutool_modclkcfg_deinit_pwm0(void)
  147. {
  148. CLK_DisableModuleClock(PWM0_MODULE);
  149. return;
  150. }
  151. void nutool_modclkcfg_init_pwm1(void)
  152. {
  153. CLK_EnableModuleClock(PWM1_MODULE);
  154. CLK_SetModuleClock(PWM1_MODULE, CLK_CLKSEL2_PWM1SEL_PCLK1, MODULE_NoMsk);
  155. return;
  156. }
  157. void nutool_modclkcfg_deinit_pwm1(void)
  158. {
  159. CLK_DisableModuleClock(PWM1_MODULE);
  160. return;
  161. }
  162. void nutool_modclkcfg_init_spi0(void)
  163. {
  164. CLK_EnableModuleClock(SPI0_MODULE);
  165. CLK_SetModuleClock(SPI0_MODULE, CLK_CLKSEL2_SPI0SEL_PCLK1, MODULE_NoMsk);
  166. return;
  167. }
  168. void nutool_modclkcfg_deinit_spi0(void)
  169. {
  170. CLK_DisableModuleClock(SPI0_MODULE);
  171. return;
  172. }
  173. void nutool_modclkcfg_init_systick(void)
  174. {
  175. CLK_EnableSysTick(CLK_CLKSEL0_STCLKSEL_HIRC_DIV2, 0);
  176. return;
  177. }
  178. void nutool_modclkcfg_deinit_systick(void)
  179. {
  180. CLK_DisableSysTick();
  181. return;
  182. }
  183. void nutool_modclkcfg_init_tmr0(void)
  184. {
  185. CLK_EnableModuleClock(TMR0_MODULE);
  186. CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0SEL_HIRC, MODULE_NoMsk);
  187. return;
  188. }
  189. void nutool_modclkcfg_deinit_tmr0(void)
  190. {
  191. CLK_DisableModuleClock(TMR0_MODULE);
  192. return;
  193. }
  194. void nutool_modclkcfg_init_tmr1(void)
  195. {
  196. CLK_EnableModuleClock(TMR1_MODULE);
  197. CLK_SetModuleClock(TMR1_MODULE, CLK_CLKSEL1_TMR1SEL_HIRC, MODULE_NoMsk);
  198. return;
  199. }
  200. void nutool_modclkcfg_deinit_tmr1(void)
  201. {
  202. CLK_DisableModuleClock(TMR1_MODULE);
  203. return;
  204. }
  205. void nutool_modclkcfg_init_tmr2(void)
  206. {
  207. CLK_EnableModuleClock(TMR2_MODULE);
  208. CLK_SetModuleClock(TMR2_MODULE, CLK_CLKSEL1_TMR2SEL_HIRC, MODULE_NoMsk);
  209. return;
  210. }
  211. void nutool_modclkcfg_deinit_tmr2(void)
  212. {
  213. CLK_DisableModuleClock(TMR2_MODULE);
  214. return;
  215. }
  216. void nutool_modclkcfg_init_tmr3(void)
  217. {
  218. CLK_EnableModuleClock(TMR3_MODULE);
  219. CLK_SetModuleClock(TMR3_MODULE, CLK_CLKSEL1_TMR3SEL_HIRC, MODULE_NoMsk);
  220. return;
  221. }
  222. void nutool_modclkcfg_deinit_tmr3(void)
  223. {
  224. CLK_DisableModuleClock(TMR3_MODULE);
  225. return;
  226. }
  227. void nutool_modclkcfg_init_uart0(void)
  228. {
  229. CLK_EnableModuleClock(UART0_MODULE);
  230. CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HXT, CLK_CLKDIV0_UART0(1));
  231. return;
  232. }
  233. void nutool_modclkcfg_deinit_uart0(void)
  234. {
  235. CLK_DisableModuleClock(UART0_MODULE);
  236. return;
  237. }
  238. void nutool_modclkcfg_init_uart1(void)
  239. {
  240. CLK_EnableModuleClock(UART1_MODULE);
  241. CLK_SetModuleClock(UART1_MODULE, CLK_CLKSEL1_UART1SEL_PCLK1, CLK_CLKDIV0_UART1(1));
  242. return;
  243. }
  244. void nutool_modclkcfg_deinit_uart1(void)
  245. {
  246. CLK_DisableModuleClock(UART1_MODULE);
  247. return;
  248. }
  249. void nutool_modclkcfg_init_uart2(void)
  250. {
  251. CLK_EnableModuleClock(UART2_MODULE);
  252. CLK_SetModuleClock(UART2_MODULE, CLK_CLKSEL3_UART2SEL_PCLK0, CLK_CLKDIV4_UART2(1));
  253. return;
  254. }
  255. void nutool_modclkcfg_deinit_uart2(void)
  256. {
  257. CLK_DisableModuleClock(UART2_MODULE);
  258. return;
  259. }
  260. void nutool_modclkcfg_init_usbd(void)
  261. {
  262. CLK_EnableModuleClock(USBD_MODULE);
  263. CLK_SetModuleClock(USBD_MODULE, CLK_CLKSEL0_USBDSEL_HIRC, MODULE_NoMsk);
  264. return;
  265. }
  266. void nutool_modclkcfg_deinit_usbd(void)
  267. {
  268. CLK_DisableModuleClock(USBD_MODULE);
  269. return;
  270. }
  271. void nutool_modclkcfg_init_usci0(void)
  272. {
  273. CLK_EnableModuleClock(USCI0_MODULE);
  274. return;
  275. }
  276. void nutool_modclkcfg_deinit_usci0(void)
  277. {
  278. CLK_DisableModuleClock(USCI0_MODULE);
  279. return;
  280. }
  281. void nutool_modclkcfg_init_wdt(void)
  282. {
  283. CLK_EnableModuleClock(WDT_MODULE);
  284. CLK_SetModuleClock(WDT_MODULE, CLK_CLKSEL1_WDTSEL_LIRC, MODULE_NoMsk);
  285. return;
  286. }
  287. void nutool_modclkcfg_deinit_wdt(void)
  288. {
  289. CLK_DisableModuleClock(WDT_MODULE);
  290. return;
  291. }
  292. void nutool_modclkcfg_init_wwdt(void)
  293. {
  294. CLK_EnableModuleClock(WWDT_MODULE);
  295. CLK_SetModuleClock(WWDT_MODULE, CLK_CLKSEL1_WWDTSEL_HCLK_DIV2048, MODULE_NoMsk);
  296. return;
  297. }
  298. void nutool_modclkcfg_deinit_wwdt(void)
  299. {
  300. CLK_DisableModuleClock(WWDT_MODULE);
  301. return;
  302. }
  303. void nutool_modclkcfg_init_rtc(void)
  304. {
  305. CLK_EnableModuleClock(RTC_MODULE);
  306. return;
  307. }
  308. void nutool_modclkcfg_deinit_rtc(void)
  309. {
  310. CLK_DisableModuleClock(RTC_MODULE);
  311. return;
  312. }
  313. void nutool_modclkcfg_init_base(void)
  314. {
  315. /* Enable clock source */
  316. CLK_EnableXtalRC(CLK_PWRCTL_LIRCEN_Msk | CLK_PWRCTL_HIRCEN_Msk | CLK_PWRCTL_LXTEN_Msk | CLK_PWRCTL_HXTEN_Msk);
  317. /* Waiting for clock source ready */
  318. CLK_WaitClockReady(CLK_STATUS_LIRCSTB_Msk | CLK_STATUS_HIRCSTB_Msk | CLK_STATUS_LXTSTB_Msk | CLK_STATUS_HXTSTB_Msk);
  319. /* Disable PLL first to avoid unstable when setting PLL */
  320. CLK_DisablePLL();
  321. /* Set PLL frequency */
  322. CLK->PLLCTL = (CLK->PLLCTL & ~(0x000FFFFFul)) | 0x0008C02Eul;
  323. /* Waiting for PLL ready */
  324. CLK_WaitClockReady(CLK_STATUS_PLLSTB_Msk);
  325. /* If the defines do not exist in your project, please refer to the related clk.h in the Header folder appended to the tool package. */
  326. /* Set HCLK clock */
  327. CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));
  328. /* Set PCLK-related clock */
  329. CLK->PCLKDIV = (CLK_PCLKDIV_APB0DIV_DIV1 | CLK_PCLKDIV_APB1DIV_DIV1);
  330. return;
  331. }
  332. void nutool_modclkcfg_init(void)
  333. {
  334. /*---------------------------------------------------------------------------------------------------------*/
  335. /* Init System Clock */
  336. /*---------------------------------------------------------------------------------------------------------*/
  337. //CLK->PWRCTL = (CLK->PWRCTL & ~(0x0000000Ful)) | 0x0231001Ful;
  338. //CLK->PLLCTL = (CLK->PLLCTL & ~(0x000FFFFFul)) | 0x0008C02Eul;
  339. //CLK->CLKDIV0 = (CLK->CLKDIV0 & ~(0x00FFFFFFul)) | 0x00000000ul;
  340. //CLK->CLKDIV4 = (CLK->CLKDIV4 & ~(0x0000000Ful)) | 0x00000000ul;
  341. //CLK->PCLKDIV = (CLK->PCLKDIV & ~(0x00000077ul)) | 0x00000000ul;
  342. //CLK->CLKSEL0 = (CLK->CLKSEL0 & ~(0x0000013Ful)) | 0x0000003Ful;
  343. //CLK->CLKSEL1 = (CLK->CLKSEL1 & ~(0x7777777Ful)) | 0x4477773Bul;
  344. //CLK->CLKSEL2 = (CLK->CLKSEL2 & ~(0x00300033ul)) | 0x00200023ul;
  345. //CLK->CLKSEL3 = (CLK->CLKSEL3 & ~(0x07000000ul)) | 0x04000000ul;
  346. //CLK->AHBCLK = (CLK->AHBCLK & ~(0x0000009Eul)) | 0x0000009Eul;
  347. //CLK->APBCLK0 = (CLK->APBCLK0 & ~(0x180723FDul)) | 0x180723BDul;
  348. //CLK->APBCLK1 = (CLK->APBCLK1 & ~(0x00030100ul)) | 0x00030100ul;
  349. //CLK->CLKOCTL = (CLK->CLKOCTL & ~(0x0000003Ful)) | 0x00000000ul;
  350. //SysTick->CTRL = (SysTick->CTRL & ~(0x00000005ul)) | 0x00000001ul;
  351. /* Unlock protected registers */
  352. SYS_UnlockReg();
  353. /* Enable base clock */
  354. nutool_modclkcfg_init_base();
  355. /* Enable module clock and set clock source */
  356. nutool_modclkcfg_init_acmp01();
  357. nutool_modclkcfg_init_adc();
  358. nutool_modclkcfg_init_crc();
  359. nutool_modclkcfg_init_ebi();
  360. nutool_modclkcfg_init_hdiv();
  361. nutool_modclkcfg_init_i2c0();
  362. nutool_modclkcfg_init_i2c1();
  363. nutool_modclkcfg_init_isp();
  364. nutool_modclkcfg_init_pdma();
  365. nutool_modclkcfg_init_pwm0();
  366. nutool_modclkcfg_init_pwm1();
  367. nutool_modclkcfg_init_spi0();
  368. nutool_modclkcfg_init_systick();
  369. nutool_modclkcfg_init_tmr0();
  370. nutool_modclkcfg_init_tmr1();
  371. nutool_modclkcfg_init_tmr2();
  372. nutool_modclkcfg_init_tmr3();
  373. nutool_modclkcfg_init_uart0();
  374. nutool_modclkcfg_init_uart1();
  375. nutool_modclkcfg_init_uart2();
  376. nutool_modclkcfg_init_usbd();
  377. nutool_modclkcfg_init_usci0();
  378. nutool_modclkcfg_init_wdt();
  379. nutool_modclkcfg_init_wwdt();
  380. nutool_modclkcfg_init_rtc();
  381. /* Update System Core Clock */
  382. /* User can use SystemCoreClockUpdate() to calculate SystemCoreClock. */
  383. SystemCoreClockUpdate();
  384. /* Lock protected registers */
  385. SYS_LockReg();
  386. return;
  387. }
  388. /*** (C) COPYRIGHT 2013-2020 Nuvoton Technology Corp. ***/