三种不同的时钟源可被用来驱动系统时钟(sysclk):
● hsi振荡器时钟
● hse振荡器时钟
● pll时钟 这些设备有以下2种二级时钟源:
● 40khz低速内部rc,可以用于驱动独立看门狗和通过程序选择驱动rtc。rtc用于从停机/待机模式下自动唤醒系统。
● 32.768khz低速外部晶体也可用来通过程序选择驱动rtc(rtcclk)。 当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。
1.当hsi被用于作为pll时钟的输入时,系统时钟能得到的最大频率是64mhz。
2.对于内部和外部时钟源的特性,请参考相应产品数据手册中“电气特性”章节。 用户可通过多个预分频器配置ahb、高速apb(apb2)和低速apb(apb1)域的频率。ahb和apb2域的最大频率是72mhz。apb1域的最大允许频率是36mhz。sdio接口的时钟频率固定为hclk/2。
rcc通过ahb时钟(hclk)8分频后作为cortex系统定时器(systick)的外部时钟。通过对systick控制与状态寄存器的设置,可选择上述时钟或cortex(hclk)时钟作为systick时钟。adc时钟由高速apb2时钟经2、4、6或8分频后获得。
定时器时钟频率分配由硬件按以下2种情况自动设置: 1. 如果相应的apb预分频系数是1,定时器的时钟频率与所在apb总线频率一致。 2. 否则,定时器的时钟频率被设为与其相连的apb总线频率的2倍。
void rcc_configuration(void)
{
systeminit();
rcc_apb2periphclockcmd(usarty_gpio_clk | usartz_gpio_clk | rcc_apb2periph_afio, enable);
#ifndef use_stm3210c_eval
rcc_apb2periphclockcmd(usarty_clk, enable);
#else
rcc_apb1periphclockcmd(usarty_clk, enable);
#endif
rcc_apb1periphclockcmd(usartz_clk, enable);
}