×
嵌入式 > 技术百科 > 详情

STM8单片机的时钟系统

发布时间:2021-07-15 发布时间:
|

一、安全系统


如果启动,当MCU的主时钟的外部时钟源的时候,外部时钟源突然损坏,断开或者是因为其他原因而失效,则自动切换为辅助时钟源HSI/8,而且系统将一直使用辅助时钟源,直至MCU再次被复位,


设置时钟安全系统寄存器CLK_CSSR中的CSSEN位,可使能时钟安全系统。为安全起见,CSS一旦使能就不能被关闭,直到下一次复位。


二、Stm8S的时钟有三种:


1,1-24M高速外部晶体振荡器(HSE)


2,最大24M高速外部时钟信号(HSE user-ext)


3,16M高速内部RC振荡器(HSI)


4,128KHz低俗内部RC(LSI)


三、时钟切换


时钟切换涉及到的寄存器:


1,主时钟切换寄存器(CLK_SWR)--用来选择目标时钟


2,切换控制寄存器(CLK_SWCR)--判断目标时钟源是否就绪,使能时钟切换的执行


3,主时钟状态寄存器(CLK_CMSR)--用来指示当前当前所选的主时钟源


例如:


#include"stm8s105s4.h"


void Delay(unsigned int x)


{


unsigned int i,j;


for(i = x;i>0;i--)


for(j = 300;j>0;j--);


}


void GPIO_Init(void)


{


PA_DDR = 0x70;


PA_CR1 = 0x70;


PD_CR1 = 0x80;


PD_CR2 = 0x80;


}


main()


{


GPIO_Init();


while(1)


{


PA_ODR = 0x70;


Delay(2500);


PA_ODR = 0x00;


Delay(2500);


};


}


TLI中断子程序


@far @interrupt void TLI_Int(void)


{


CLK_SWR = 0xb4;


//主时钟切换寄存器,选择外部高速时钟


while(!(CLK_SWCR&0x08));


//等待切换控制寄存器第三位SWIF置1,即等待目标时钟准备就绪


CLK_SWCR |=0x02;


//目标始终准备就绪之后,将切换控制寄存器的第1位swen置1,执行切换


while(CLK_CMSR!=0xb4);


//若切换成功,主时钟状态寄存器的值为0xB4


CLK_CSSR |=0x01;


//CSSR(Clock safe system register)使能始终安全系统


}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ADI 高精度低功耗精密放大器