在谈预装寄存器及影子寄存器的差别前,不妨先对STM32定时器的时基单元做个基本了解。STM32各系列的定时器结构和框架基本是一样的,时基单元也一样。 下面时基单元是以STM32F3系列为参考。
时基单元中的TIMx_PSC、 TIM_ARR两个寄存器加上捕捉比较模块中TIMX_CCR寄存器,它们都可以动态修改。不过他们的修改和生效可能不在同一个时刻,这里便引入了预装寄存器及影子寄存器的概念。要记住一点,真正在TIMER模块中起作用的是影子寄存器。
1、用户程序对TIMx_PSC寄存器值的修改或读取都是操作其预装载寄存器,其修改值只能通过更新事件后才能生效,即从TIMx_PSC的预装寄存器拷贝到TIMx_PSC的影子寄存器。
2、对于TIM_ARR寄存器的修改或读取,是直接操作影子寄存器还是先操作ARR的预装寄存器,等更新事件后拷贝到影子寄存器呢,这跟一个TIMx_CR1寄存器的ARPE位有关。如果ARPE=0,即不使用ARR的预装功能,则修改TIMx_ARR 寄存器的值就是操作影子寄存器,新的ARR的值立即生效。否则,如果ARPE=1,即使用ARR的预装功能,则修改TIMx_ARR 寄存器的值就是操作预装寄存器,直到发生更新事件后,ARR预装载寄存器的值才被拷贝到影子寄存器中。
同样,对于TIMx_CCR的修改和读取跟TIM_ARR寄存器的修改或读取类似。是直接操作CCR影子寄存器还是先操作CCR的预装载寄存器,等更新事件后拷贝到影子寄存器呢,这跟一个TIMx_CCMRx寄存器的OCxPE位有关。如果OCxPE=0,即不使用CCR的预装载功能,则修改TIMx_CCR寄存器的值就是操作影子寄存器,新的CCR的值立即生效。否则,如果OCxPE==1,即使用CCR的预装载功能,则修改TIMx_ARR 寄存器的值就是操作预装载寄存器,要等到发生更新事件后,CCR预装载寄存器的值拷贝到影子寄存器中。
明白了OCxPE位的功用后,当OCxPE==1时,就不难理解为什么做OC比较输出时,发现修改CCR寄存器的值后可能需要最长1个ARR周期的延时后才能生效。
-------------------------------------------------------------------------------------
在STM32参考手册的第13、14章中,都有一张定时器的框图,下面是第14章中定时器框图的局部,图中黄色框所示的是auto-reload register,在下面的第14.3.2节"Counter Modes"就解释了auto-reload register的用法。
在图中可以看到auto-reload register这个框有一个阴影,有些其它寄存器也有用阴影表示,如我用蓝色标出的Capture/Compare寄存器;有阴影的寄存器,表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preload register(预装载寄存器),另一个是程序员看不见的、但在操作中真正起作用的寄存器,称为shadow register(影子寄存器);正如手册上的14.3.1节所说,根据TIMx_CR1寄存器中APRE位的设置,preload register的内容可以随时传送到shadow register,即两者是连通的(permanently),或者在每一次更新事件(UEV)时才把preload register的内容传送到shadow register。
在图中用红线圈起的一个大写的U和一个向下的箭头,表示对应寄存器的影子寄存器可以在发生更新事件时,被更新为它的preload register的内容;而图中用绿线圈起的部分,表示对应的Autoreload register可以产生一个更新事件(U)或更新事件中断(UI)。
设计preload register和shadow register的好处是,所有真正需要起作用的寄存器(shadow register)可以在同一个时间(发生更新事件时)被更新为所对应的preload register的内容,这样可以保证多个通道的操作能够准确地同步。如果没有shadow register,或者preload register和shadow register是直通的,即软件更新preload register时,同时更新了shadow register,因为软件不可能在一个相同的时刻同时更新多个寄存器,结果造成多个通道的时序不能同步,如果再加上其它因素(例如中断),多个通道的时序关系有可能是不可预知的。
个人点评:
1. 有影子寄存器的有3个:分频寄存器PSC,自动重装载ARR,自动捕获CCRx,注意,PSC,ARR,CCRx不是影子寄存器,而是它们对应的“预装载寄存器”;
2、影子寄存器才是真正起作用的寄存器,但是ST没有提供这个寄存器出来,只是提供出与之相对应的预装载寄存器,分别为“PSC,ARR,CCRx”
3、我们用户能接触到,能修改或读取的都是预装载寄存器,ST只是把它们开放出来(影子寄存器并没有开放给用户),其实就是ARR寄存器,如:TIM1->ARR
4、从预装载寄存器ARR传送到影子寄存器,有两种方式,一种是立刻更新,一种是等触发事件之后更新;这两种方式主要取决于寄存器TIMx->CR1中的“APRE”位;
4.1 , APRE=0,当ARR值被修改时,同时马上更新影子寄存器的值;
4.2 , APRE=1,当ARR值被修改时,必须在下一次事件UEV发生后才能更新影子寄存器的值;
5、怎么样马上立刻更改影子寄存器的值,而不是下一个事件;方法如下:
5.1 、将ARPE=0,TIM_ARRPreloadConfig(ch1_Master_Tim, DISABLE );
5.2 在ARPE=1,TIM_ARRPreloadConfig(ch1_Master_Tim, ENABLE); 我们更改完预装载寄存器后,立刻设置UEV事件,即更改EGR寄存的UG位,如下:
TIM1->ARR = period-1; //设置周期
TIM1->CCR1 = period>>1; //设置占空比 50%
TIM_GenerateEventTIM1,TIM_EventSource_Update); //主动发生UEV事件,UG=1
6、传送过程示意图如下:
上一篇:stm32 6 step pwm信号生成
下一篇:STM32的定时器有两种捕获模式
推荐阅读最新更新时间:2024-11-12 10:51
推荐帖子
- Windows CE下建立数据库的几种方法.pdf
- WindowsCE下建立数据库的几种方法.pdfWindowsCE下建立数据库的几种方法.pdf
- yuandayuan6999 单片机
- 看到iphone5的发布,怎么感觉安卓也好,wp也好都大有前途
- 本帖最后由jameswangsynnex于2015-3-320:00编辑也许是期望值太高了,iphone5的发布,并没有让人感觉那么惊艳,个人认为iphone5依旧是一部好机器,但是确实没有什么亮点。屏幕没有达到720P的效果,屏幕的话应该一直一来一直是苹果机器的优势之一,客观地讲这个分辨率比主流的高端安卓机还差那么点。其他的地方也没有太多可圈可点的地方,本身苹果的做风就是不是安卓机器那样拼硬件指标。功能上也没有太大改进,支持LTE也是大势所趋,2800万的拍摄其实是照片的
- wstt 移动便携
- 软件工程师工资待遇一般怎么样?
- 先从整个市场大行业来看,软件工程师,程序员属于高薪产业,国家扶持等这个是毋庸置疑的,确认好软件工程师、程序员的行业是非常不错,前景一片光芒。那软件工程师工资一般多少钱,待遇怎么样?待遇好不好?软件工程师的待遇当然不会太差,但是也有部分比较苦逼的程序员和挼案件工程师,拿着不过的工作,每天凌天一两点拖着疲惫的身体回家。这样的程序员也不在少数。其实软件工程师分好多等级,小编笼统的概括为初级,中级,高级三个层次。这三个等级基本上决定的软件工程师的工资等级,但是具体待遇好不好喝公司也有一些
- huaqingyuanjian 综合技术交流
- TI汽车紧急呼叫和远程信息处理解决方案
- 本帖最后由dontium于2015-1-2311:47编辑今天给大家介绍TI汽车紧急呼叫和远程信息处理解决方案。配备eCall系统的车辆将可在发生事故时向紧急服务中心拨打电话。客户通过利用包含TI推出的AEC-Q100合格集成电路(IC)在内的完整参考解决方案,能够加快eCall系统的设计。player.youku./player.php/sid/XNjc0MjAxNjQ0/v.swfTI汽车紧急呼叫
- 德州仪器_视频 模拟与混合信号
- 英飞凌针对电动工具的高功率、高效率以及高可靠性解决方案 直播中!
- 点击进入直播直播时间:7月3日(周三)下午14:00直播简介:作为电子工程师,我们一直致力于让设计方案更更安全、更可靠、更稳健,还能使用市面上最流行的技术,比如快充。目前,电动工具的市场增长主要由有线/汽油转换所驱动,随着工具中的电池具备更高压、更高能量密度和轻便的特性,设计挑战也越来越多。为应对市场上的挑战,英飞凌推出了完整的系列解决方案,本期研讨会将逐一为您介绍。奖品设置:直播讲师:黎伟昌|英飞凌大中华区消费、计算
- EEWORLD社区 工控电子
- 《智能驾驶之激光雷达算法详解》5.多传感器SLAM
- 本书第13章是关于多传感器融合SLAM算法的相关讲解,主要介绍了多传感器融合在智能车辆定位中的应用。由于单一传感器存在工作特性和局限性,处理不了复杂路况,因此多传感器融合实现高精度、稳定、实时的定位成为学术界和工业界的热点之一。多传感器融合SLAM有松耦合和紧耦合两种方式,紧耦合方式精度和稳定性较高,是目前研究重点,如LIC-Fusion算法、基于因子图框架的算法、R2LIVE算法及LVI-SAM算法等。此外,一些学者结合事先构建的高精点云地图提供全局定位信息,如百度的相关研究及
- 镜花水月000 汽车电子
设计资源 培训 开发板 精华推荐
- 109990013,DSO Nano v3 评估套件是一款便携式数字存储示波器
- AM30EW-2415SZ 15V单路输出DC/DC转换器的典型应用
- 心电仪
- CADzhaoyilin
- USB转Sata硬盘 基于INIC-1618L方案 USB2.0
- AM1S-2415SZ 1W DC-DC转换器典型应用
- ESP32墨水屏驱动板
- 12W、5V、12V 交流转直流单路输出电源,适用于台式电脑
- LTC1929CG-PG LTC4350GN 演示板,双相降压电源,带热插拔负载共享模块,5V 至 14V 输入,3.3Vout @ 40A
- 使用 NXP Semiconductors 的 MPC855T 的参考设计
- 答疑专场:模拟世界的最重要构成——信号链与电源
- 更直观的了解5G?观看罗德与施瓦茨主题演讲,填问卷赢好礼!
- 【ST直播】MEMS传感器开发套件简介、了解内嵌“有限状态机和机器学习内核”的传感器
- vishay消费知识大闯关正式开始
- 有奖直播报名:赛灵思和安富利专注嵌入式视觉应用,助力人工智能和汽车辅助驾驶!
- 走进TE物联网应用资料中心,免费下载行业趋势报告、技术干货,还有样品申请
- 有奖直播|罗彻斯特电子半导体全周期解决方案 助您应对供应链中断和元器件停产的挑战
- 高性能 i.MX RT 处理器助力智能节点无需联网实现机器学习
- 只为汽车更安全,下载 TI DRV3000系列产品手册,抢楼截图入好礼喽!
- 下载有礼|精华课件汇编:泰克半导体器件的表征及可靠性研究交流会暨吉时利测试测量年度研讨会