AURIX系列之TC275学习笔记(二):系统定时器(STM)

系统定时器(STM)

1. STM模块的总体框图
在这里插入图片描述

① STM是一个递增计数器,频率为fSTM。申请时复位,如果清除了SCU_ARSTDIS.STMxDIS位,则STM复位。重置后, STM已启用并立即开始计数。不可能影响内容正常操作期间的计时器。定时器寄存器只能读取而不能写入。

② 由于STM的64位宽度,因此无法一次读取全部内容指令。需要读两个加载指令。由于计时器将继续要在两个加载操作之间进行计数,可能会读取两个值不一致(两次读取操作之间,计时器下部可能溢出到上部)。所以为了能够一个同步周期连续地读取在STM内容中,需要使用捕获寄存器( CAP)。

③ STM也可以从七个寄存器TIM0到TIM6的各部分中读取,选择越来越高阶的STM 32位范围。每次读取寄存器STM_TIM0 至STM_TIM5 之一时, 捕获寄存器锁存 STM 的高位部分。因此, 在定时器低位部分被读出时, STM_CAP 保存此时刻定时器的高位部分。 第二次读操作应读出STM_CAP值, 从而得到完整的定时器值。

④ 可以将64位系统计时器的内容与两个内容进行比较比较存储在CMP0和CMP1寄存器中的值。服务请求可以是在STM与CMP0或CMP1寄存器进行比较匹配时生成。

2.比较寄存器操作

STM与CMP0或CMP1寄存器的比较匹配可以产生服务请求。
STM与CMP0或CMP1寄存器的比较匹配。
可编程两个参数进行比较操作:
1.寄存器CMP0 / CMP1中相关位的宽度(比较宽度MSIZEx)为可以将比较操作设置为0至31。
2. 64位STM中用于比较操作的第一位可以是从0到31编程。(MSTARTx)
在这里插入图片描述
图显示了比较操作的一个示例。在这个例子中,以下参数被编程:
•MSIZE0 = 10001B = 17D; MSTART0 = 01010B = 10D
•MSIZE1 = 00111B = 7D; MSTART1 = 00111B = 7D

3.比较匹配中断控制

在这里插入图片描述
图中给出比较匹配中断控制的逻辑电路。 每个 STM_CMPx寄存器具有比较匹配中断请求标志( STM_ICR.CMPxIR), 该标志可在发生比较匹配事件时进行硬件置位。 软件也可置位(由 STM_ISSR.CMPxIRS) 或清零(由STM_ISSR.CMPxIRR) 中断请求标志。

需要注意
①通过设置 STM_ISSR.CMPxIRS = 1 来置位STM_ICR.CMPxIR 不会在 STMIRx 上产生中断。 来自 CMP0 和 CMP1 的匹配中断能够进一步经由 STM_ICR.CMPxOS 连至输出信号 STMIR0 或 STMIR1。 STMIR0 和 STMIR1 输出信号分别连接到中断服务请求控制寄存器 STM_SRC0 和 STM_SRC1。
②STM 复位之后, 因为 STM 和比较寄存器 STM_CMPx 的复位值匹配, 比较匹配中断标志 STM_ICR.CMPxIR 被立即置位。 由于在 STM 复位操作之后, 比较匹配中断被自动禁止( CMPxEN = 0) , 因此置位 CMPxIR 标志不能直接产生比较匹配中断。 因而,在 STM 复位之后、 使能比较匹配中断之前, 应当软件清零 CMPxIR 标志(置位寄存器STM_ISSR 的位 CMPxIRR) 。 否则, 会触发不需要的比较匹配中断事件。

4.寄存器

①时钟控制寄存器

在这里插入图片描述
DISR(模块禁止请求位:STM 模块启用/禁止控制。
0B 未请求禁止 STM 模块
1B 请求禁止 STM 模块

DISS(模块禁止状态位:该位指示 STM 模块的当前状态。
0B STM 模块被使能
1B STM 模块被禁止

EDIS(睡眠模式使能控制):用于模块睡眠模式控制

②定时器/捕获寄存器

TIM0
在这里插入图片描述

TIM1~TIM6
在这里插入图片描述
③定时器捕获寄存器(CAP)
在这里插入图片描述
定时器捕获寄存器位[63:32]读取寄存器 STM_TIM0 至 STM_TIM5 和TIM0SV时, 捕获寄存器 STM_CAP 始终捕获 64位 STM 的位[63:32]。(该寄存器和 STM_TIM0 至 STM_TIM5 寄存器配合使用,例如:捕获寄存器和STM0配合使用时,读取STM0时,捕获寄存器同时捕获 64位 STM 的位[63:32],这样准确获取某个时刻的STM的值。若STM0和STM6配合,必须先后读取两寄存器,不能准确读取某个时刻STM的值)。

④比较寄存器(Compare Registers)
在这里插入图片描述

⑤比较匹配控制寄存器(Compare Match Control Register)
在这里插入图片描述
MSIZE0(比较寄存器宽度) :该位域决定用于和系统定时器进行比较操作的CMP0(从位 0 开始) 的位数。
00000B CMP0[0] 用于比较操作
00001B CMP0[1:0] 用于比较操作

11110B CMP0[30:0] 用于比较操作
11111B CMP0[31:0] 用于比较操作

MSTART0 (CMP0的起始位位置) : MSTART1和 CMP0 比较的 STM 的起始位位置该位域决定 64位 STM 中与 CMP0 的位 0 进行比较的最低位位置。 比较值宽度由 MSIZE0 定义。
00000B STM[0] 为最低位
00001B STM[1] 为最低位

1110B STM[32] 为最低位
1111B STM[31] 为最低位

MSIZE1 (同上)
MSTART1(同上)

⑥中断寄存器 Interrupt Registers
在这里插入图片描述
CMP0EN(比较寄存器CMP0中断使能控制):比较寄存器 CMP0 中断使能控制
0B CMP0比较匹配中断被禁止
1B CMP0比较匹配中断使能

CMP0IR (比较寄存器中断请求标志):该位指示比较寄存器 CMP0 的比较匹配中断请求是否被挂起。 CMP0IR 必须由软件清零。
0B 自从上次该位被清零后, 未能检测到比较匹配中断
1B 检测到一个比较匹配中断
CMP0IR 必须由软件清零, 也可由软件置位(见CMPISRR 寄存器) 。 STM 复位操作之后, 如果发生STM 与比较寄存器 CMP0 的复位值比较匹配事件, 则CMP0IR 被立即置位。

CMP0OS(比较寄存器CMP0中断输出选择):该位决定比较寄存器 CMP0 的比较匹配事件激活哪条中断输出线。
0B 选择中断输出 STMIR0
1B 选择中断输出 STMIR1

CMP1EN(同上)
CMP1IR(同上)
CMP1OS(同上)

⑦中断设置/清除寄存器

在这里插入图片描述
CMP0IRR(复位比较寄存器 CMP0 中断标志)
0B 位 ICR.CMP0IR 不改变
1B 位 ICR.CMP0IR 被清零
CMP0IRS(置位比较寄存器 CMP0 中断标志)
0B 位 ICR.CMP0IR 不改变
1B 位 ICR.CMP0IR 被置位。
CMP0IRR和CMP0IRS同上

⑧复位配置寄存器
STM比较匹配能够选择产生一个系统/应用软件复位
在这里插入图片描述

STM0,STM1 , STM2 ; 该位域定义了由复位产生的复位。STM0比较匹配中的重置请求触发器重启。
00B STM0触发器不产生复位
01B 产生一个系统复位以触发STMx复位
10B 产生一个应用程序复位以触发STMx复位
11B 保留

⑨复位状态寄存器
在这里插入图片描述
STM0,STM1,STM2 STMx比较匹配的请求触发复位状态
0B : 上一个复位不是此复位触发器所请求的
1B : 上一个复位是此复位触发器所请求的(STMx比较匹配发生)

  • 8
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值