CW32F030和CW32L083的配置方法是一样的
这个时钟树和STM32的比起来确实要好理解多了,我觉得这个适合初学者了解怎样配置时钟。
简单的配置来使用就只需要看上面一段,不用看下面那一大截,这样就好看多了。
首先可以看到图最左边External Crystal 分别为外部低速时钟(LSE)和外部高速时钟(HSE)的接口这里分别对应引脚PC14 / PC15 和 置 PF00/PF01。接着一路一路的看。
第一路 LSE:输入频率为32.768KHz。
第二路LSI:输入频率32.8KHz.
第三路PLL:它的输入可由HSI分频以及HSE提供。
第四路HSI:输入频率为32M-48MHz,再经过分频器分频。
第五路HSE:输入频率为4-32MHz。
使用时选择其中一路作为时钟源输入,通过选通器进行选择,选通过后再由系统时钟分频器进行分频得到系统时钟。
系统默认上电使用的是HSI经过6分频后得到8MHz,再切换到用户设置的时钟频率进行工作。
代码
下面是我配置的使用通过HSE作为输入通过PLL倍频得到的72MHz系统时钟的代码。
其中需要注意的是CW32F030 内部的 FLASH 存储器支持最快 24MHz 频率的操作时钟,当配置的 HCLK 频率大于 24MHz 时,需通过 FLASH 控制寄存器 FLASH_CR2 的 WAIT 位域来配置插入的等待 HCLK 周期个数,配置规则如下表所示:
void SystemInit(void)
{
RCC_HSE_Enable(RCC_HSE_MODE_OSC, 8000000, RCC_HSE_DRIVER_LEAST, RCC_HSE_FLT_CLOSE); //使能HSE输入
RCC_AHBPeriphClk_Enable(RCC_AHB_PERIPH_FLASH, ENABLE);//使能FLASH时钟
RCC_PLL_Enable(RCC_PLLSOURCE_HSEOSC, 8000000, RCC_PLL_MUL_9);//PLL输出 = 输入 * 倍频数 = 8M * 9 = 72MHz
FLASH_SetLatency(FLASH_Latency_3);//24<f≤48 ---> Flashwait = 2 48<f ---> Flashwait = 3
RCC_SysClk_Switch(RCC_SYSCLKSRC_PLL); //切换系统时钟到PLL时钟
RCC_SystemCoreClockUpdate(72000000);//更新系统时钟频率
}
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_45813999/article/details/131263176
|