STM8S之时钟设置
昨天被安排做别的工作,耽误一天,今天继续写,坚持学习。
1,STM8S的4种时钟源可用做主时钟:
● 1-24MHz高速外部晶体振荡器(HSE)
● 最大24MHz高速外部时钟信号(HSE user-ext)
● 16MHz高速内部RC振荡器(HSI)
● 128KHz低速内部RC(LSI)
各个时钟源可单独打开或关闭,从而优化功耗。
2,系统的启动
为使系统快速启动,复位后时钟控制器自动使用HSI的8分频(HSI/8)做为主时钟。其原因为HSI的稳定时间短,而8分频可保证系统在较差的VDD条件下安全启动。
另外,stm8s还可以切换时钟源,有自动和手动两种方法,先不做讨论。
3,几个时钟寄存器
时钟状态寄存器(CLK_CMSR)
主时钟切换寄存器(CLK_SWR)
可以知道系统复位后,会自动用内部高速时钟作为时钟源。
void main(void) { /* Infinite loop */ CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//设置为内部高速时钟 while (1) { } }
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1)函数设置内部时钟不分频。
void CLK_HSIPrescalerConfig(CLK_Prescaler_TypeDef HSIPrescaler) { /* check the parameters */ assert_param(IS_CLK_HSIPRESCALER_OK(HSIPrescaler)); /* Clear High speed internal clock prescaler */ CLK->CKDIVR &= (uint8_t)(~CLK_CKDIVR_HSIDIV); /* Set High speed internal clock prescaler */ CLK->CKDIVR |= (uint8_t)HSIPrescaler; }
所以,系统复位后直接调用CLK_HSIPrescalerConfig函数,就设置系统时钟为不分频的内部高速时钟。