[DemoCode下载] M058S的时钟初始化示例将寄存器操作改写成库函数操作

[复制链接]
 楼主| yiyigirl2014 发表于 2025-1-8 12:32 | 显示全部楼层 |阅读模式
下面是自带的BSP示例中采用的寄存器配置
  1.     /* Enable Internal RC 22.1184MHz clock */
  2.     CLK->PWRCON |= CLK_PWRCON_OSC22M_EN_Msk;

  3.     /* Waiting for Internal RC clock ready */
  4.     while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_OSC22M_STB_Msk));

  5.     /* Switch HCLK clock source to Internal RC and and HCLK source divide 1 */
  6.     CLK->CLKSEL0 &= ~CLK_CLKSEL0_HCLK_S_Msk;
  7.     CLK->CLKSEL0 |= CLK_CLKSEL0_HCLK_S_HIRC;
  8.     CLK->CLKDIV &= ~CLK_CLKDIV_HCLK_N_Msk;
  9.     CLK->CLKDIV |= CLK_CLKDIV_HCLK(1);

  10.     /* Enable external XTAL 12MHz clock */
  11.     CLK->PWRCON |= CLK_PWRCON_XTL12M_EN_Msk;

  12.     /* Waiting for external XTAL clock ready */
  13.     while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_XTL12M_STB_Msk));

  14.     /* Set core clock as PLL_CLOCK from PLL */
  15.     CLK->PLLCON = PLLCON_SETTING;
  16.     while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_PLL_STB_Msk));
  17.     CLK->CLKSEL0 &= (~CLK_CLKSEL0_HCLK_S_Msk);
  18.     CLK->CLKSEL0 |= CLK_CLKSEL0_HCLK_S_PLL;

  19.     /* Update System Core Clock */
  20.     /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
  21.     //SystemCoreClockUpdate();
  22.     PllClock        = PLL_CLOCK;            // PLL
  23.     SystemCoreClock = PLL_CLOCK / 1;        // HCLK
  24.     CyclesPerUs     = PLL_CLOCK / 1000000;  // For SYS_SysTickDelay()

  25.     /* Enable UART module clock */
  26.     CLK->APBCLK |= CLK_APBCLK_UART0_EN_Msk;

  27.     /* Select UART module clock source */
  28.     CLK->CLKSEL1 &= ~CLK_CLKSEL1_UART_S_Msk;
  29.     CLK->CLKSEL1 |= CLK_CLKSEL1_UART_S_HXT;
按照上面的意思,使用库函数替换
  1. CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk);
  2.         CLK_WaitClockReady(CLK_CLKSTATUS_OSC22M_STB_Msk);
  3.         CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC,CLK_CLKDIV_HCLK(1));
  4.        
  5.         CLK_EnableXtalRC(CLK_PWRCON_XTL12M_EN_Msk);
  6.         CLK_WaitClockReady(CLK_CLKSTATUS_XTL12M_STB_Msk);
  7.        
  8.         CLK_EnablePLL(CLK_PLLCON_PLL_SRC_HXT,FREQ_50MHZ);
  9.         CLK_SetCoreClock(FREQ_50MHZ);

  10.         CLK_EnableModuleClock(UART0_MODULE);
  11.         CLK_SetModuleClock(UART0_MODULE,CLK_CLKSEL1_UART_S_HXT,CLK_CLKDIV_UART(1));
你更喜欢哪一种风格呢?


您需要登录后才可以回帖 登录 | 注册

本版积分规则

229

主题

3675

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部