STM8S系统时钟设置,对于
单片机来说是非常重要的,不同的用处必须应用不同的时钟。。举个例子,做AVR时在高稳定的串口通讯时用的时钟一般是3.6864M,主要是这个算波特率精确。。STM8S同样重要。。
STM8S时钟源:
●1-24MHz高速外部晶体振荡器(HSE)
●最大24MHz高速外部时钟信号(HSE user-ext)
●16MHz高速内部RC振荡器(HSI)
●128KHz低速内部RC(LSI)
各个时钟源可单独打开或关闭,从而优化功耗。
对于我这么懒得人一般都是用的内部或者外部晶振。。这个芯片时钟方面很大的一个亮点就是时钟可以自由分频。在降低功耗方面,如果有特殊需求的时候还是考虑STM8L系列或者430的吧,不得不承认术业有专攻。
按照技术手册寄存器功能给寄存器赋值写成一下函数:
//启动时钟配置
void SysClkInit(void)
{
// CLK_SWR=0xe1; //HSI为主时钟源
CLK_SWR=0xb4; //HSE为主时钟源
CLK_CKdivR=0x00;//CPU时钟0分频,系统时钟0分频
CLK_CSSR=0x01;//时钟安全监测使能
CLK_SWCR=0x02;//使能自动时钟切换
}
首先设置时钟源,也就是时钟是用内部还是外部,如果对时间精度要求不高,用内部也可以。。然后是时钟分频。。这个分频需要设定系统时钟和CPU时钟,这两个时钟,如果对此有特殊要求就得好好斟酌一下了,而我全部不分频。时钟安全监测还是打开吧,如果用的外部时钟,但是外部时钟突然出现故障的话,单片机会自动启用内部时钟,内部时钟默认为8分频也就是2M。然后时钟自动切换,好像这个有没有都可以,去掉能不能使回头再试。。
开机初始化,在不调用此函数时CPU时钟默认开启2M,但是调用此函数后,时钟切换为16M,LED闪烁速度明显加快、、