CW32时钟配置
今天研究了一会儿,结果发现B站武汉芯源半导体官方有写文章讲如何配置参考链接
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 周期个数,配置规则如下表所示:
FLASH_CR2.WAIT | 取指周期等待 HCLK 周期个数 | HCLK 频率 |
---|---|---|
000 | 1个 | <= 24MHz |
001 | 2个 | > 24MHz ,且 <= 48MHz |
010 | 3个 | > 48MHz ,且 <= 72MHz |
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);//更新系统时钟频率
}