当前位置:首页 > 单片机 > 单片机
[导读]stm8时钟源有4种:1. 16MHz的高速内部时钟源HSI2. 1到16MHz的高速外部时钟源HSE3. 32.768KHz的低速外部时钟源LSE4. 38KHz的低速内部时钟源LSI这4种时钟源都可以作为系统时钟,大家也可以用示波器量一下59引脚,看输出

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了。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭