历史上的今天
今天是:2025年02月20日(星期四)
2020年02月20日 | STM8S主时钟切换(使用HSE时钟源)
2020-02-20 来源:eefocus
使用的时钟切换方式为手动切换,在中断中进行时钟切换,然后将切换后的主时钟输出到CLK_CCO口
时钟切换流程图(手动切换流程图):

时钟树:

寄存器版:
unsigned char i=255;
PD_DDR_DDR0=1;//配置PD0为输出模式
PD_CR1_C10=1;//配置PD0为推挽模式
PD_CR2_C20=1;//配置PD0输出最大为10Mhz
if(CLK_CMSR==0xE1) //如果HSI为主时钟源(复位值),切换到HSE
{
CLK_SWCR_SWIEN=1;//时钟切换中断使能
CLK_SWR=0xB4;//HSE为主时钟源
asm("rim");//开启全局中断
}
while(CLK_SWCR_SWBSY)//等待忙标志复位
{
i--;
if(i==0) {
CLK_SWCR_SWBSY=0;//如果时钟切换没有成功,清除标志位SWBSY以复位当前的切换操作
break;
}
}
while(CLK_CCOR_CC0BSY);//等待CCO时钟空闲 (0:CCO时钟空闲)
CLK_CCOR_CCOSEL=0x0c;//配置时钟输出源选择Fhse
CLK_CCOR_CCOEN=1;//使能CCO时钟输出
while(1);
}
#pragma vector=CLK_SWITCH_vector
__interrupt void CLK_IRQHandler(void)
{
CLK_SWCR_SWIF=0;//清除中断标志
CLK_SWCR_SWEN=1;//使能时钟切换的执行
}
库函数版:
main.c文件
void main(void)
{
CLK_DeInit();//重置时钟相关寄存器到默认复位值
GPIO_Init(GPIOD, GPIO_PIN_0, GPIO_MODE_OUT_PP_HIGH_FAST);//高速(10MHz)推挽高电平输出
enableInterrupts();//使能全局中断
ErrorStatus es;
es = CLK_ClockSwitchConfig(CLK_SWITCHMODE_MANUAL, CLK_SOURCE_HSE, ENABLE, CLK_CURRENTCLOCKSTATE_ENABLE);
//手动切换;新的时钟源:HSE;启动切换中断;保持原时钟源开启
if (es == SUCCESS) //切换是否成功,SUCCESS or ERROR
{
CLK_CCOConfig(CLK_OUTPUT_MASTER);//配置时钟输出脚的时钟源:f(master)
CLK_CCOCmd(ENABLE);//启动时钟输出功能
};
/* Infinite loop */
while (1)
{
}
}
stm8s_it.c文件
INTERRUPT_HANDLER(CLK_IRQHandler, 2)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
ITStatus flags_tatus;
flags_tatus = CLK_GetITStatus(CLK_IT_SWIF);//检测时钟切换中断标志
if (flags_tatus == SET) //如果时钟切换中断标志SWIF是置位状态,SET or RESET
{
CLK_ClearITPendingBit(CLK_IT_SWIF);//清除时钟切换中断标志
CLK_ClockSwitchCmd(ENABLE);//启动时钟切换功能
};
}
结果:
下一篇:stm8l15x 外部时钟配置
史海拾趣
|
详细资料见http://www.xie-gang.com/df.htm 电路图本已经剪辑了,但不会上传,所以大家还是去网站看吧。:L 我现在是想做个无线的遥控,用单片机控制的。 发射部分,我想应该是用一个I/O口输出电平的变化,比如01010011,那么我应该能看到发射后 ...… 查看全部问答> |
|
是这样的,我想做一个有连贯动作的机器人,机器人完成了一个动作之后再做下一个动作,每一步动作快慢不一样,我想产生这样的方波信号来控制步进电机。需要有这样的功能,首先由外部中断触发,计时器开始产生频率为f1的方波,f1完了之后产生频率f2的 ...… 查看全部问答> |
|
高手帮忙啊,我电脑全格后重装后无法安装Dell I6400 BIOS A17驱动,因为我的电池出问题了,但AC adapter能正常使用,所以我不想去买块新的电池了,请问高手如何跳过电池检测而顺利安装BIOS A17?我用BIOS A14或其他更老版本的BIOS都不行,都要经过电池检测 ...… 查看全部问答> |
|
刚刚接触单片机,选修课结课老师要求我做出一个单片机的程序。老师要求不要特别简单的。 我想不出做什么,所以请教大家,我应该做什么实验呢?不要太复杂的,比方说关于以太网口的实验,我可以做什么啊?请大家帮我想想,如果有代码参考更好了。我 ...… 查看全部问答> |
|
如何让wince5.0的系统支持运行.net2.0下用VS2005开发的程序?(定制系统内核) 请问怎么解决让wince5.0的系统支持运行.net2.0下用VS2005开发的程序,是直接安装PB5.0后定制的系统内核就支持吗? 我开始开发时装了VS2003和PB4.2,是支持.net1.0的程序在wince4.2上面运行的,但是装了VS2005和PB5.0后程序就不能支持运行了(vs200 ...… 查看全部问答> |
|
由TI大学计划工程师精心撰写的WEBENCH培训资料第一部分已经新鲜出炉,包括:WEBENCH 电源设计工具;电源选型;单电源设计;电源架构设计;FPGA/处理器电源设计 … 查看全部问答> |




