单片机/MCU论坛
直播中

剪刀脚

8年用户 862经验值
私信 关注
[问答]

Mini51如果使用内部的22.1184M和10K晶振,SYS_Init()函数如何配置?

Mini51如果使用内部的22.1184M和10K晶振,SYS_Init()函数如何配置

回帖(2)

张利

2024-1-15 16:37:50
/* Enable Internal RC 22.1184 MHz clock */
    CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk);

    /* Waiting for Internal RC clock ready */
    CLK_WaitClockReady(CLK_CLKSTATUS_OSC22M_STB_Msk);

    /* Enable External XTAL (4~24 MHz) */
    CLK_EnableXtalRC(CLK_PWRCON_IRC10K_EN_Msk);

    /* Waiting for 10k Hz clock ready */
    CLK_WaitClockReady(CLK_CLKSTATUS_IRC10K_STB_Msk);

CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_HIRC, 0);
举报

自我清欢

2024-1-15 16:52:49
Mini51如果使用内部的22.1184M和10K晶振,SYS_Init()函数的配置如下:

```c
void SYS_Init(void)
{
    // 设置72MHz内部高频振荡器
    CLK->PWRCON |= CLK_PWRCON_HIRC_EN_Msk; // 使能内部高频振荡器
    CLK->CLKDIV &= ~CLK_CLKDIV_HCLK_N_Msk; // 配置系统时钟为高频振荡器的频率
    while (!(CLK->CLKSTATUS & CLK_CLKSTATUS_HIRC_STB_Msk)); // 等待高频振荡器稳定

    // 配置系统时钟为内部高频振荡器,并使能内部高频振荡器的频率调整器
    CLK->PLLCON &= ~CLK_PLLCON_PLL_SRC_Msk; // 配置系统时钟为内部高频振荡器
    CLK->PLLCON &= ~CLK_PLLCON_NR_Msk; // 将内部高频振荡器频率调整器的值设为0

    // 设置外部低频振荡器
    CLK->PWRCON |= CLK_PWRCON_LIRC_EN_Msk; // 使能内部低频振荡器
    CLK->CLKSEL0 &= ~CLK_CLKSEL0_STCLK_S_Msk; // 配置系统时钟为低频振荡器
    while (!(CLK->CLKSTATUS & CLK_CLKSTATUS_LIRC_STB_Msk)); // 等待低频振荡器稳定

    // 配置外设时钟源为PLL输出的时钟
    CLK->CLKSEL0 &= ~CLK_CLKSEL0_UART_S_Msk; // UART时钟源为PLL输出的时钟
    CLK->CLKSEL1 &= ~CLK_CLKSEL1_TMR0_S_Msk; // TMR0时钟源为PLL输出的时钟
    CLK->CLKSEL1 &= ~CLK_CLKSEL1_TMR1_S_Msk; // TMR1时钟源为PLL输出的时钟
    CLK->CLKSEL1 &= ~CLK_CLKSEL1_TMR2_S_Msk; // TMR2时钟源为PLL输出的时钟
    CLK->CLKSEL1 &= ~CLK_CLKSEL1_TMR3_S_Msk; // TMR3时钟源为PLL输出的时钟

    // 配置时钟分频
    CLK->CLKDIV &= ~CLK_CLKDIV_UART_N_Msk; // UART时钟分频为1
    CLK->CLKDIV &= ~CLK_CLKDIV_TMR0_N_Msk; // TMR0时钟分频为1
    CLK->CLKDIV &= ~CLK_CLKDIV_TMR1_N_Msk; // TMR1时钟分频为1
    CLK->CLKDIV &= ~CLK_CLKDIV_TMR2_N_Msk; // TMR2时钟分频为1
    CLK->CLKDIV &= ~CLK_CLKDIV_TMR3_N_Msk; // TMR3时钟分频为1
}
```

以上代码将设置为内部高频振荡器22.1184MHz作为系统时钟源,并将其分频为72MHz。同时,将内部低频振荡器10KHz作为系统计时器的时钟源。将各个外设的时钟源设置为PLL输出的时钟,并将时钟分频为1。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分