历史上的今天
今天是:2025年02月28日(星期五)
2021年02月28日 | STM8单片机的时钟系统
2021-02-28 来源:eefocus
一、安全系统
如果启动,当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 如何实现主时钟输出功能
下一篇:STM8内部时钟切换
史海拾趣
|
NI MeasurementStudio免费培训课程诚邀您参与 NI Measurement Studio是National Instruments(美国国家仪器有限公司)为Microsoft Visual Studio 2008/2005/.NET 2003和Visual Studio 6.0环境所开发出的一款集成式套件, 包括各种类别的测试、测量与自动化应用的控件。Measurement Studio针对 ...… 查看全部问答> |
|
我刚下了个proteus 7.4 破解版的,安装完后就是运行不了一运行就是什么电脑上找不到isis的lxk文件的?哪位大侠给小弟指点指点吧!!!!… 查看全部问答> |
|
嵌入式开发,要对USB设备进行管理。在linux 2.4 下插入USB设备可以从系统配置文件/proc/scsi/usb-storage*/* 中读出USB设备的插入状态,该文件最好一行Attached为yes就是已经插上USB设备了,若为no就是没有插上。现在linux 2.6下,并没 ...… 查看全部问答> |
|
在开关电源设计中,电流控制模式中有的用DCM模式有的用CCM模式,想问一下,在设计一个电路前,怎么选择这两种模式呢?也就是说为什么有的电路选择DCM,而有的电路选择CCM; 看过一些档案材料;DCM与ccm确实有一些差异,CCM能储存更多的能量; 然后 ...… 查看全部问答> |
|
【连载】【ALIENTEK MiniSTM32 开发板】STM32不完全手册--按键输入实验(实验二) ALIENTEK开发板购买地址:http://shop62103354.taobao.com/ [ 本帖最后由 正点原子 于 2010-8-30 09:35 编辑 ]… 查看全部问答> |




