历史上的今天
今天是:2025年06月02日(星期一)
2018年06月02日 | 关于STM8的时钟源配置
2018-06-02 来源:eefocus
关于STM8的时钟源配置
STM8的主时钟是由内部时钟分频后得到或者直接是外部晶振产生(或外部直接输入)的时钟。
CPU时钟分频器分频主时钟后供CPU使用
外设(如定时器,UART)使用的不是CPU相同的时钟,而是主时钟,当然、当CPU分频器分频因子是1时CPU时钟和外设输入的时钟频率是相等的。
STM8复位时默认使用内部高速RC时钟,如果需要切换到外部晶振,那就需要用软件实现切换,这一点与AVR不同,AVR的时钟源选择是通过熔丝位的,在程序中是无法切换的,其优点是配置简单,无需固件切换,但误配置熔丝位会锁死芯片,而STM8的软件配置方式有效的避免了时钟源选择导致的锁芯片现象。
下面是切换时钟源到外部晶振的配置代码供参考:
//使用库
void CLK_Configuration(void)
{
CLK_DeInit();
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);//时钟分频设置系统时钟12M不分频
CLK_HSECmd(ENABLE);//外部时钟使能
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE, DISABLE);
CLK_ClockSwitchCmd(ENABLE);
}
//不使用库
void CLK_Configuration(void)
{
CLK->CKDIVR=0;//不分频
CLK->ECKR = 0x01; //启动外部高速晶体振荡器, 允许外部高速振荡器工作
while((CLK->ECKR & 0x02) == 0x00); // 等待外部高速振荡器准备好
CLK->SWCR = CLK->SWCR | 0x02;
CLK->SWR = 0xB4; // 选择芯片外部的高速振荡器为主时钟
while((CLK->SWCR & 0x08) == 0); // 等待切换成功
CLK->SWCR = CLK->SWCR & 0xFD; // 清除切换标志
上一篇:STM8时钟配置
下一篇:stm8时钟源选择配置
史海拾趣
|
EasyPRO 80B通用编程器是EasyPRO系列的第一个成员,它是目前国内市场上同类产品中集成度最高,功耗最小,支持型号最全的通用编程器之一。EasyPRO 80B采用USB通讯技术,内置高速CPU并采用程控电源和程控分频器,使得编程深度加大,速度更快,稳定性 ...… 查看全部问答> |
|
如今,汽车制造业已经与软件结下了不解之缘。不仅如此,汽车制造业已经深陷于软件危机之中。问题不是出在汽车制造业,这种软件危机只不过是设备软件产业本身所面临压力的间接反映而已。如今,新产品能够获得的市场窗口期非常狭窄,而功能上的复 ...… 查看全部问答> |
|
从2000年末开始,原中国电信以及重组后的中国电信和中国网通等固网运营商都把宽带接入、特别是利用现有市话双绞线提供的ADSL接入作为自己最为重要的新的业务增长点之一,并以此作为阻击其它一些新兴的驻地网运营商发展宽带业务的利器之一。以北京通 ...… 查看全部问答> |
|
我的bsp里面有stepldr和eboot, 我想让eboot跑起来, 但把stepldr.nb1烧写到flash中后,在dnw上显示的却是乱码!!!! 这个是串口的初始代码: void Uart_Init(void) { int i; rUFCON1 = 0x0;   ...… 查看全部问答> |
|
现在的IP地址已经不够用了,但是依然可以使用非独立的IP地址来访问网络。 例如我的IP:10.15.1.79[mask:255.255.0.0],这个应该肯定不是独立IP了。 如果我要给外网发送一个IP报(140.252.0.1),可以判断是外网,就可以通过默认路由转发这个IP报。 ...… 查看全部问答> |
|
两个函数分别是微秒和毫秒的延时,精确度在5%以内。LPC1343应该不适合,毕竟M3不想M0,有流水。 void sleepUs(uint32_t us){ // 1us base on 12MHz = 2, 50MHz = 8; uint32_t i = (us ...… 查看全部问答> |




