历史上的今天
返回首页

历史上的今天

今天是:2024年11月12日(星期二)

正在发生

2021年11月12日 | stm32之时钟控制

2021-11-12 来源:eefocus

本文提到的有以下内容:

  • 时钟系统与总线矩阵

  • SysTick系统定时器

  • RTC实时时钟

  • 看门狗定时器

  • 通用定时器

 

一、时钟系统与总线矩阵

  stm32F4的时钟树如下图所示:

  在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。

  • HSI是高速内部时钟,RC振荡器,频率为8MHz。

  • HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。

  • LSI是低速内部时钟,RC振荡器,频率为40kHz。

  • LSE是低速外部时钟,接频率为32.768kHz的石英晶体。

  • PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。

  我们在学习51单片机的时候,其内部是没有晶振的,而stm32是有的。stm32可以通过RCC(时钟控制寄存器)对时钟进行参数配置以及使能。我们还可以通过修改system_stm32f4xx.c文件,来配置上述时钟树上的一些分频、倍频参数,得到理想的频率。


   在单片机系统中,CPU和总线以及外设的时钟设置是非常重要的,因为没有时钟就没有时序,组合电路需要好好理解清楚。我们先来看

一下总线矩阵。

  片上总线标准种类繁多,而由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。二者分别适用于高速与相对低速设备的连接。


   一般性的时钟设置需要先考虑系统时钟的来源,是内部RC还是外部晶振还是外部的振荡器,是否需要PLL。然后考虑内部总线和外部总线,最后考虑外设的时钟信号。遵从先倍频作为CPU时钟,然后在由内向外分频,下级迁就上级的原则。  

 

二、SysTick系统定时器  

  SysTick—系统定时器是属于CM4内核中的一个外设,内嵌在NVIC中。系统定时器是一个24bit的向下递减的计数器,计数器每计数一次的时间为1/SYSCLK,一般我们设置系统时钟SYSCLK等于180M。当重装载数值寄存器的值递减到0的时候,系统定时器就产生一次中断,以此循环往复。


  因为SysTick是属于CM4内核的外设,所以所有基于CM4内核的单片机都具有这个系统定时器,使得软件在CM4单片机中可以很容易的移植。

系统定时器一般用于操作系统,用于产生时基,维持操作系统的

心跳。


  一般用于系统内部运行以及延时函数。

 

三、RTC实时时钟

  RTC(Real-Time Clock)实时时钟为操作系统提供了一个可靠的时间,并且在断电的情况下,RTC实时时钟也可以通过电池供电,一直运行下去。


  RTC通过STRB/LDRB这两个ARM指令向CPU传送8位数据(BCD码)。数据包括秒,分,小时,日期,天,月和年。RTC实时时钟依靠一个外部的32.768Khz的石英晶体,产生周期性的脉冲信号。每一个信号到来时,计数器就加1,通过这种方式,完成计时功能。


  RTC实时时钟有如下一些特性:

  • 1,BCD数据:这些数据包括秒、分、小时、日期、、星期几、月和年。

  • 2,闰年产生器

  • 3,报警功能:报警中断或者从掉电模式唤醒

  • 4,解决了千年虫问题    (详见http://baike.baidu.com/view/9349.htm)

  • 5,独立电源引脚RTCVDD

  • 6,支持ms中断作为RTOS内核时钟

  • 7,循环复位(round reset)功能

  如图,RTC实时时钟的框架图,XTIrtc和XTOrtc产生脉冲信号,即外部晶振。传给2^15的一个时钟分频器,得到一个128Hz的频率,这个频率用来产生滴答计数。当时钟计数为0时,产生一个TIME TICK中断信号。时钟控制器用来控制RTC实时时钟的功能。复位寄存器用来重置SEC和MIN寄存器。闰年发生器用来产生闰年逻辑。报警发生器用来控制是否产生报警信号。

 

四、看门狗定时器

  看门狗定时器又分为独立看门狗IWDG和窗口看门狗WWDG。

1、独立看门狗

  独立看门狗IWDG其实是一个12位递减计数器,有故障时,计数器减到0,产生复位,无故障时,计数器减到0之前就刷新计数值(喂狗),不进

行复位。其采用独立时钟,主要用于监视硬件错误(不受系统时钟影响)。

2、窗口看门狗

  窗口看门狗WWDG其实是一个7位递减计数器,有计数上下限,下限位0x40,上限由用户指定,上下限之间刷新计数值则不复位,其他都复位。采

用系统时钟,主要用于监视软件错误。

 

五、通用定时器

  stm32的定时器有基本定时器、通用定时器和高级定时器。这里以通用定时器为例,其内部结构如下图所示,需要设置预分频系数,并不是直接

使用APB1的时钟。

  通用定时器的计数模式分为5种:

  • 向上计数:计数器从0计数到自动装载值。

  • 向下计数:从自动装载值计数到0。

  • 向上向下计数(中心对齐计数):计数器从0计数到自动装载值,再从自动装载值计数到0,反复循环。

  • 输入捕获:测量输入信号的脉宽、PWM波的占空比等。

  • 输出比较:PWM波用的就是这种模式。

  定时器的时间公式:T=((n-1)*(pre-1))/Tclk,其中n为计数值,pre为预分频系数,Tclk为定时器时钟。


  为什么计数值和预分频系数要减一?因为计数是从0开始的,而预分频系数为0时,表示不分频。


  定时器用于中断时,注意更新中断标志位。


推荐阅读

史海拾趣

DIPTRONICS MANUFACTURING INC公司的发展小趣事

圜达实业于1985年在台湾新北市创立,创始人凭借对电子开关行业的深刻理解和前瞻视野,决定专注于研发制造各类程序开关、触动开关等产品。公司初创时期面临资金短缺、市场竞争激烈等挑战,但创始人凭借坚定的信念和不懈的努力,逐步在市场上站稳脚跟。

HELUKABEL公司的发展小趣事

在稳定国内市场的基础上,圜达实业积极拓展海外市场。凭借优良的品质和快速的交期,公司的产品逐渐打入国际市场,并赢得了众多客户的信赖。如今,圜达实业的产品已营销至全球100余个国家,遍及五大洲。

ABCO公司的发展小趣事

随着技术的不断进步,ABCO公司意识到只有不断创新才能在竞争中保持领先地位。因此,公司加大了对研发的投入,建立了一支高效的技术团队。这支团队不仅成功研发出了多款具有自主知识产权的新型传感器,还积极探索传感器与其他电子设备的融合应用,为公司开辟了新的增长点。

DMEL Inc公司的发展小趣事

随着全球环保意识的提高,DMEL Inc积极响应绿色环保的号召。公司加大了对环保技术的研发和应用力度,推出了一系列绿色、环保的产品。同时,DMEL Inc还注重生产过程中的节能减排工作,采用了先进的生产工艺和环保材料。这些措施的实施不仅提升了公司的环保形象也为企业带来了可持续发展的动力。

Cressall Power Resistors公司的发展小趣事

随着国内市场的饱和,Cressall开始将目光投向国际市场。公司积极参与国际电子行业的展会和交流活动,与国际同行建立了广泛的联系。通过与国外企业的合作,Cressall不仅引进了先进的技术和管理经验,还成功打开了多个海外市场。同时,公司还加强了与国际知名企业的战略合作,共同开发新产品,进一步提升了公司的国际竞争力。

Grayhill公司的发展小趣事
根据测量结果调整电路参数,如电位器的阻值、限流电阻的阻值等,以优化电路性能。

问答坊 | AI 解惑

C语言笔试大全

4. static有什么用途?(请至少说明两种) 1.限制变量的作用域 2.设置变量的存储域 7. 引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 2) 不存在指向空值的引用,但是存在指向空 ...…

查看全部问答>

Linux内核解读入门

针对好多Linux 爱好者对内核很有兴趣却无从下口,本文旨在介绍一种解读linux内核源码的入门方法,而不是解说linux复杂的内核机制; (参考资料来源:飞凌 http://www.witech.com.cn/) 一.核心源程序的文件组织: 1.Linux核心源程序通常都安 ...…

查看全部问答>

请教一款楼宇控制产品的使用

手上有一个楼控的项目,有一个日本松下的楼控产品需要熟悉一下,也是刚接触这个行业。 这个产品上有两个网口,一个232串口,还有RS485,485有6个接口,上边是1S+,1S-,1SE;下边也是1S+,1S-,1SE 还有两个NMAST接口,上下都是2S1,2S2,2SE。 ...…

查看全部问答>

TCPMP CE6.0

今天把TCPMP放到我的CE6.0上面试。但是发现的情况是用GDI模式的非常好用。但是用directdraw放的时候就是几个彩条在闪什么都没有。。结果在程序中发现我的HALinit根本就没有调用。当然我的directdraw就没有调用了。还有当我一打开我的palyer.exe的时 ...…

查看全部问答>

请问OMAP730 bootloader 具体如何烧录

CPU:OMAP730B ROM:M-Systems DiskOnChip G3 MD4832-d512-V3Q18 RAM:HY25L256160AC-7.5 已有bootloader文件,及这款裸板。请问具体需要什么设备、怎么连接、怎样操作,才可以把bootloader文件写进板里 …

查看全部问答>

手机发短信

发短信的功能,比如说移动和联通的短信功能,公司都提供了相应的web service的接口,我们的手机都做好连接收发短信都是连接这个web service收发的吗, 如果是,那我们自己假如知道这些接口的话,我们可以用应用程序直接调用这些web service的接口来 ...…

查看全部问答>

小菜鸟STM32F103RET6学习记录贴

2011来了,2012还会远么。呵呵…… 现在觉得M3内核的东西还是不错,就STM32F103RET6这个片子吧,512Kb的ROM,64Kb的RAM。还是不错的,在以前的公司找朋友拿了两块最小系统空PCB板,自己买元件焊接起来了。 板子与开发工具如下: 电路图如 ...…

查看全部问答>

串口烧写f240的flash

不用仿真器,将240的串口和pc的串口相连,怎样将编好的程序下载到 240的flash中,具体步骤是什么,谢谢!…

查看全部问答>

SVPWM

楼主,您若有的话也发给我一个,谢谢!…

查看全部问答>

小鸟问一下一个关于MSP430的串口

如果用Lanuchpad的USB线做下位机的通信,问一下 能用MFC中的COM组件来读Lanchpad pad发出的数据吗!!!…

查看全部问答>