Stm8单片机的时钟系统

来源:本站
导读:目前正在解读《Stm8单片机的时钟系统》的相关信息,《Stm8单片机的时钟系统》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《Stm8单片机的时钟系统》的详细说明。
简介:这里介绍一个Stm8单片机的时钟系统。

Stm8的时钟系统

一、安全系统

如果启动,当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)使能始终安全系统

}

提醒:《Stm8单片机的时钟系统》最后刷新时间 2024-03-14 01:08:11,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《Stm8单片机的时钟系统》该内容的真实性请自行鉴别。