历史上的今天
今天是:2025年04月03日(星期四)
2020年04月03日 | STM8L151C8T6切换时钟信号
2020-04-03 来源:eefocus
先说重点:切换时钟源后,需要重新初始化时钟相关的外设。
项目需求,单片机在A状态下使用外部12MHz的晶振作为时钟信号,B状态下使用内部时钟HSI。
代码如下:
//初始化时钟信号
//形参:UINT8 Clk_Flg:时钟源,可以选为HSE或HSI
void InitClock(UINT8 Clk_Flg) {
UINT16 Clk_Cnt = 0;
if(HSE == Clk_Flg){ //时钟源选为HSE
CLK_DeInit();
CLK_HSEConfig(CLK_HSE_ON);
while(!CLK_GetFlagStatus(CLK_FLAG_HSERDY)){
if ((++Clk_Cnt) > 50000){
InitClock(HSI); //HSE启动失败,切回HSI
return;
}
}
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE);
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
CLK_SYSCLKSourceSwitchCmd(ENABLE);
CLK_ClockSecuritySystemEnable();
// System_ERROR_UserCallback(ERROR_REMOVE_HSE);//自定义函数,清除HSE错误提示
return;
}
else{ //时钟源选为HSI
CLK_HSICmd(ENABLE);
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_2); //内部时钟为16MHz,2分频 = 8Mhz,
// System_ERROR_UserCallback(ERROR_HSE); //自定义函数,HSE错误提示
}
}
实际运行时发现,切换时钟后,和时钟相关的外设工作异常。
考虑到时钟源的影响,将所有工作异常的外设重新初始化后,代码即正常运行。
下一篇: STM8烧录及加密/解密流程
史海拾趣
|
近十年来,由整个电路构成交流一直流一交流一滤波的变频装置变频电源,应运而生,并得到广泛应用。变频电源不仅能模拟输出世界不同国家的电网指标,而且也为出口电器厂商一工程师在设计开发、生产、检测等应用中提供纯净可靠的、低诣波失真的、高稳定的 ...… 查看全部问答> |
|
在电子电路中,常可以看到VCC、VDD和VSS三种不同的符号,它们有什么区别呢? 一、解释 VCC:C=circuit 表示电路的意思, 即接入电路的电压; VDD:D=device 表示器件的意思, 即器件内部的工作电压; VSS:S=series 表示公共连接的意 ...… 查看全部问答> |
|
请大家有相关经验或者认识的说说串口在线升级的方法,大概有哪些思路? 主要是如何固定一些不需要升级的文件,如何将非升级文件与升级文件在FLASH中分区存放?… 查看全部问答> |
|
at91fr40162s的CPU,晶振用的66M的。用的JTAG线是之前调at91fr40162的CPU的线和JTAG板子,是 20口的,因为at91fr40162s的CPU的JTAG线是直接从MCU接出来,只有四跟,TDI,TDO,TCK,TMS, 再接上两根电源和地线,有六跟,根据网上的说明自己弄了一 ...… 查看全部问答> |
|
大虾们好,以下是我的UART1中断函数 void UART1 (void) interrupt 20 using 2 { unsigned char xdata tChar=0; EIE2 &= 0xBF; RI1Flag=(SCON1 & 0x01); ...… 查看全部问答> |
|
volatile unsigned int *xy=(volatile unsigned int *)0x3401; 编译,这句话报错: erro:"declaration may not appear after executable statement in block" 是什么地方出了问题? #define conval 0x15 .. unsigned int a=conval; 也报 ...… 查看全部问答> |
|
大家好,我是某大学里的一名本科生,马上就毕业了。我学的是机械,以及力学。但我个人却对电路设计和单片机什么的比较有兴趣。最近,也在花相当一部分时间学习嵌入式。我个人觉得,未来机电结合才是王道。大家觉得我的想法怎么样?对于一个外行,非 ...… 查看全部问答> |
|
我们公司以前一直用NEC的单片机,现在改为用TI 28335,刚开始用;想问一个问题,就是看资料说TIMER 0是给用户用的,那是否定时器中断,只能有一个了?若想多定时中断咋办?… 查看全部问答> |
|
本系统系统以MSP430G2231位核心控制器,核心控制器通过DC-DC降压电路从12V蓄电池取电。通过对光伏太阳能板输出电压与电流进行采样,可以实现最大功率跟踪。通过对铅酸电池的电压及充电电流进行采样,可以实现蓄电池充电的控制。 … 查看全部问答> |




