本文提到的有以下内容:
时钟系统与总线矩阵
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时,表示不分频。
定时器用于中断时,注意更新中断标志位。
上一篇:STM32时钟理解
下一篇:最后一页
推荐阅读
史海拾趣
DDD公司成立于1964年,当时正值电子行业的蓬勃发展期。创始人看到了延迟线技术在计算机和电信领域中的巨大潜力,决定投身其中。然而,初期的市场并不如预期般顺利,公司面临着资金短缺、技术难题和市场竞争等多重压力。但DDD公司的创始人凭借对技术的热情和坚定的信念,带领团队不断研发新产品,优化生产工艺,逐渐在市场中树立了自己的品牌形象。
Clover Display Limited的创始团队最初是Kontoy Products Company Limited的成员,专注于电子板组装。随着技术的不断进步和市场需求的转变,团队意识到液晶显示技术的巨大潜力。于是,在1983年,他们决定成立一家专注于显示器研发与销售的新公司——Clover Display Limited。初期,公司面临着资金短缺、技术壁垒等多重挑战,但凭借着对技术的热情和市场的敏锐洞察力,他们逐步攻克难关,开始在液晶显示领域崭露头角。
在追求商业成功的同时,FMI公司也积极履行社会责任,致力于环保和可持续发展。公司制定了一系列环保计划和程序,以确保在所有业务运营中保持环保意识。FMI的产品从设计到生产都遵循环保原则,采用环保材料和工艺,减少对环境的影响。此外,公司还积极参与行业内的环保活动,推动整个电子行业的绿色发展。这种负责任的企业形象为FMI赢得了社会的广泛赞誉和尊重。
随着电子技术的飞速发展,FMI公司紧跟时代步伐,不断研发新技术和新产品。在1992年,FMI成功将频率管理扩展到OEM市场,进一步拓宽了其业务范围。这一举措不仅增强了公司的市场竞争力,还为公司带来了更多的商业机会。通过为计算机外设、工业仪器、局域网/广域网等多个领域提供定制化的频率控制解决方案,FMI逐渐成为了行业内的佼佼者。
在公司的快速发展中,BERNSTEIN公司逐渐将目光投向了国际市场。通过与国际知名企业的合作与交流,公司不断引进先进的技术和管理经验,提升了自身的竞争力。同时,BERNSTEIN公司的产品也逐渐在国际市场上赢得了广泛的认可和好评,为公司的发展注入了新的动力。
在产品质量和技术水平得到认可后,ETAL开始积极拓展市场。公司制定了详细的市场营销策略,通过参加国际电子展会、与知名企业合作等方式提高品牌知名度。同时,ETAL还注重客户服务,建立了完善的售后服务体系,确保客户在使用产品过程中得到及时、专业的支持。这些举措使得ETAL的市场份额不断扩大,品牌影响力逐渐增强。
该手册是Keil 软件公司8051 单片机软件开发工具的介绍是为新用户和有兴趣的读者准备的使用 指南只需要阅读本书就可以正确地运行和使用该软件这本用户指南包括以下章节的内容 第一章介绍 对本用户手册的概述 第二章安装 讲述怎样安装软件并设置工 ...… 查看全部问答∨ |
|
请大家看下下面打问号几行代码,抛开其功能不说,真的是奇怪了,我都看了又看,头都大了,就是不知道为什么,请朋友们指点下 #include<reg52.h> &nbs ...… 查看全部问答∨ |
|
STM32的驱动库好用吗?效率高吗?优化的吗?准备上STM32 N多年没买过开发板了,也没用过仿真器了。都是用软件编译调试好,直接ISP,然后通过串口命令开启调试信息的输出。 昨天买了块STM32F103全功能型开发板,他们的办事效率真低(深圳到广州通常当 ...… 查看全部问答∨ |
|
请问用哪款TI的DSP板做图像处理比较好,要可以和Matlab连接使用,且可通过Real Time Work Shop工具箱自动生成代码,要是版本新一些就更好了 最近需要买一块板子,请大家多多给建议啊 谢谢… 查看全部问答∨ |