stm8 clock
扫描二维码
随时随地手机看文章
stm8时钟源有4种:
1. 16MHz的高速内部时钟源HSI
2. 1到16MHz的高速外部时钟源HSE
3. 32.768KHz的低速外部时钟源LSE
4. 38KHz的低速内部时钟源LSI
这4种时钟源都可以作为系统时钟,大家也可以用示波器量一下59引脚,看输出的的时钟频率是否正确,在量之前需要做如下设置:
voidmain(void)
{
GPIO_Init(GPIOC,GPIO_Pin_4,GPIO_Mode_Out_PP_High_Fast);
//CLK_CCOConfig(CLK_CCOSource_HSI,CLK_CCODiv_1);/*16MHz*/
CLK_CCOConfig(CLK_CCOSource_HSI,CLK_CCODiv_16);/*1MHz*/
while(1);
}
如果选择HSI作为时钟输出,不分频的话量出来是16MHz,如果16分频的话量出来是1MHz。
系统时钟默认使用的是HSI,并且是经过8分频的,也就是2MHz,可以通过函数CLK_GetClockFreq()去得到系统时钟,例如:
voidmain(void)
{
uint32_tfreq=CLK_GetClockFreq();
while(1);
}
很奇怪,调试时通过watch窗口去查看变量freq值时,上面写法才是正确的,如果改成下面的写法:
voidmain(void)
{
uint32_tfreq;
freq=CLK_GetClockFreq();
while(1);
}
那么查看freq值时就会有问题,这里暂时还不知道是什么原因,可能和这个开发环境有关吧。
当然,也可以使用CLK_SYSCLKDivConfig()函数去设置系统时钟的分频,例如不分频:
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
那么设置后,系统时钟就为16MHz了。