历史上的今天
返回首页

历史上的今天

今天是:2024年10月09日(星期三)

正在发生

2021年10月09日 | STM8L时钟切换详解

2021-10-09 来源:eefocus

SMT8L的四大时钟源LSE,LSI,HSE,HSI,都可以作为系统时钟。


系统上电后,HSI/8作为默认系统时钟,启动完成后,用户可以切换系统时钟源。


切换分为自动切换和手动切换,没有太大的区别。


下面是自动切换的流程图,按照此流程图,编写程序,即可实现时钟切换。


只需要三步即可实现系统时钟切换:
①置位CLK_SWCR寄存器中的SWEN位,允许时钟切换
②向CLK_SWR中写数据,选择目标时钟源
③等待SWBSY清零,即等待时钟切换完成


时钟切换完成后,在主循环中翻转IO电平,通过测量IO口的输出频率,可以直观的看到切换时钟,系统时钟频率发生了变化。


本程序选择LSE(32.768KHz)作为系统时钟,时钟切换完成后,PC7翻转电平,使用逻辑分析可以测量到此时PC7的输出频率。如下图:

可以看到PC7输出频率为2.73KHz,并不是32.768KHz。这是因为,STM8L一个指令周期为二个时钟周期,同时翻转电平的程序,高电平时间需要3个指令周期,低电平时间同样为3个指令周期。所以最终测量到的IO输出频率为32.768KHz/2/6=2.730667KHz。如果选择的时钟源为16M(HSI),则最终测得的IO输出频率为16M/2/6=1.33M。要注意,系统时钟的分频器默认8分频,需要清零分频器,才满足此计算方式。


#include"iostm8l152c6.h"
/****************************************************************************************
*开发环境:IAR for stm8v6.5
*硬件平台:STM8L-DISCOVERY
*功能说明:本程序选择LSE(32.768KHz)作为系统时钟,时钟切换完成后,PC7翻转电平,使用逻辑分析可以测量到此时PC7的输出频率,最终测量到的IO输出频率为32.768KHz/2/6=2.730667KHz。
*作    者:茗风
****************************************************************************************/
/******************************************************************************************************
*  名    称:voidGPIO_Init(void)
*  功    能:初始化PC7为高速推挽输出
*  入口参数:无
*  出口参数:无
*  说    明:测量系统时钟频率的IO,测量到的频率是:目标时钟源/2/6
*  范    例:无
******************************************************************************************************/
void GPIO_Init(void)
{
  PC_CR1_C17  =1;//推挽输出
  PC_CR2_C27  =1;//高速输出
  PC_DDR_DDR7 =1;//PC4输出
//  PC_ODR_ODR7 =0;//输出低电平
}
/******************************************************************************************************
*  名    称:voidCLOCK_Init(void)
*  功    能:系统时钟切换为LSE,32.768KHz
*  入口参数:无
*  出口参数:无
*  说    明:
*  范    例:无
******************************************************************************************************/
void CLOCK_Init(void)
{
  CLK_CKDIVR =0x00;//CLK_CKDI,VR寄存器默认0x03分频值为8
//自动切换
  CLK_SWCR_SWEN =1;//允许切换时钟
  CLK_SWR =0x08;//写入一个八位的值,用于选择目标时钟源
  while(CLK_SWCR_SWBSY);//等待时钟切换完成
//手动切换
//  CLK_SWR =0x08;//写入一个八位的值,用于选择目标时钟源
//  while(!CLK_ECKR_LSERDY);//等待目标时钟源稳定
//  CLK_SWCR_SWEN =1;//允许切换时钟
  /*
*0x01:HSI selected as system clock source
*0x02:LSI selected as system clock source
*0x04:HSE selected as system clock source
*0x08:LSE selected as system clock source
  */
}
/******************************************************************************************************
*  名    称:int main(void)
*  功    能:通过PC4输出选择的时钟
*  入口参数:无
*  出口参数:无
*  说    明:因为STM8l discovery没有接外部高速晶振,所以没办法输出HSE,不要
*  范    例:无
******************************************************************************************************/
void main( void )
{
GPIO_Init();
CLOCK_Init();
while(1)
  {
    PC_ODR_ODR7 ^=1;
  }
}

推荐阅读

史海拾趣

CONTRINEX公司的发展小趣事

2015年,Contrinex正式进入中国市场,成立了全新的中国子公司。这一重要举措不仅进一步拓宽了公司的业务范围,也为中国客户提供了更加便捷和高效的服务。在中国市场,Contrinex凭借其电感式、光电式、安全光幕和RFID系统的工业级传感器产品,赢得了众多客户的青睐和信赖。

AZM [Arizona Microtek, Inc]公司的发展小趣事

在技术创新的基础上,AZM公司开始积极拓展市场。公司制定了详细的市场拓展计划,通过参加国际电子展会、建立销售网络、开展合作伙伴关系等多种方式,逐步打开了国内外市场。同时,AZM公司注重品牌建设,通过提升产品质量、优化客户服务、加强品牌宣传等手段,逐渐树立了良好的品牌形象。

Endicott Research Group Inc (ERG)公司的发展小趣事

自1979年起,Endicott Research Group(ERG)就开始涉足电源转换产品的制造领域。在初创时期,公司面临着资金紧张和技术挑战,但团队坚持创新,专注于为LCD背光供电的LED驱动器及相关电源设备的研发。通过不断的试验和改进,他们成功地开发出了一系列高效稳定的产品,为公司的后续发展奠定了坚实的基础。这一时期的艰苦奋斗和技术积累,成为了ERG发展历程中的重要篇章。

Belkin公司的发展小趣事

在发展过程中,贝尔金也通过收购其他公司来增强自身实力。例如,2013年贝尔金正式完成对Linksys的收购,这一举措进一步丰富了其产品线,并加强了在网络设备领域的竞争力。此外,贝尔金还通过不断整合内部资源,优化生产流程,提高产品质量和效率。

CAMDENBOSS公司的发展小趣事

随着产品质量的不断提升和市场口碑的积累,CAMDENBOSS公司开始积极拓展国际市场。公司与国际知名电子企业建立了紧密的合作关系,共同推动电子连接器技术的全球化发展。通过参与国际展会、建立海外分支机构等方式,公司逐步打开了国际市场的大门,产品远销至全球多个国家和地区。

AK-Nord_GmbH公司的发展小趣事

随着技术的成熟,AK-Nord_GmbH开始积极拓展市场。公司首先在欧洲地区建立了稳固的销售网络,并逐步向亚洲和北美市场扩张。在市场拓展的过程中,AK-Nord_GmbH积极与各大电子厂商建立合作伙伴关系,共同推出了一系列创新产品。这些合作伙伴关系不仅帮助公司打开了新的市场,还提升了其品牌影响力和市场份额。

问答坊 | AI 解惑

Create a flexible EDGE data receiver(Part 1)

Today\'\'s integrated solutions don\'\'t necessarily have to result in a high level of complexity.       The introduction of new wireless standards often places tremendous pressure on the underlying t ...…

查看全部问答>

[分享]单片机的C 语言轻松入门

第1 章 C 语言概述及其开发环境的建立学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好。Keil 软件是目前最流行开发80C51 系列单片机的软件,Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的 ...…

查看全部问答>

一款令人羡慕的开发板!

三者的完美结合,可以教学,实验,开发,设计,做项目用,好羡慕啊!…

查看全部问答>

晾晒ARM9 S3C2416 做的 PDA,嘿嘿,真的比S3C2440 好很多。

去年,发现这个 ARM9 S3C2416 非常适合做低端的PDA,很适合代替2440 ,成本比2440 低几十块的核心板。不过发现国内中小企业很少人用这个高性价比的处理器,总是还继续用很挫的2440 ,嘿嘿,我们就来玩玩吧。经过测试效果,2416 跑400M主频 ,64M的D ...…

查看全部问答>

多机通信问题

我目前在做一个ARM处理器(S3C4510)和多个单片机(AT2051)通过串口通信的程序,多机通信先发地址后发数据,发地址必须使第9 位信息为1,发数据必须使第9位为0; 顺便说一下:S3C4510(uClinux)和AT2051通信是可以建立起来的. 发地址前: struct termios ...…

查看全部问答>

vc2005sdi只能设备应用程序如何设置才能打开读写文件?高手指点

vc2005sdi只能设备应用程序如何设置才能打开读写文件?高手指点…

查看全部问答>

Android系统架构分析

  android系统架构图   android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。   1.应用程序   Android会同一系列核心 ...…

查看全部问答>

LaunchPad板上资源解读

为支持LaunchPad活动,我这个万年潜水者也来发帖了。MSP-EXP430G2 LaunchPad features: • USB debugging and programming interface featuring a driverless installation and application UART     serial communica ...…

查看全部问答>

学习计划

最近在学LCM141十四位段式液晶显示,后面可能会学铁电的存储,都要用到MSP430,所以将抢购进行到底!…

查看全部问答>