This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
数据表似乎错误地声明当 ENABLE 位置1时、边沿计数(捕捉)模式启动。 我在一段时间前注意到这个问题、并在 定时器配置中添加了 Tivaware 捕捉位集 define TnMR。 但是、即使 POR 默认为0x0、同一段忽略了 TnCMR 位的任何注释也必须清除、Tivaware define 会设置 TnCMR (0x00000004)任何人添加到 HWREG 调用中都不会获得预期的资源。 数据表主题 顺序 在 边沿计时模式之前具有边沿计数。 还 定义 了(TIMER_TAMR_TACMR)边沿计时模式的默认计时器。
通过阅读数据表 GPTM 分析、这个问题并不明显。 Tivaware omits distinction (HW_TIMER.h) 定义 为 通过 GPTMTnMR 寄存器中的 TnCBR 位正确设置针对边沿或时间的两个捕捉模式。 GPTMCFG 寄存器不设置边沿捕获模式默认值、GPTMTnMR 底部的脚注说明该模式在 GPTMCFG 中设置。 然而、GPTMCFG 只设置定时器溢出的点、 并且与 GPTMTnMR 位 缺省值0x0保留的方式没有关系。
通过为每 种模式(边沿/时间)添加一个单独的定义、可以很容易地校正 CCP 捕获模式的整个主题、因为它与 HWREG 调用相关 、以符号方式设置 寄存器位。
13.3.3.3输入边沿计数模式
在边沿计数模式中、定时器被配置为24位递增或递减计数器、包括带有存储在 GPTM Timer n 预分频(GPTMTnPR)寄存器中的高计数值和 GPTMTnR 寄存器中低位的可选预分频器。 在此模式下、定时器能够捕获三种类型的事件:上升沿、下降沿或上升/下降沿。 要使定时器处于边沿计数模式、必须将 GPTMTnMR 寄存器的 TnCMR 位清零。 定时器计数的边沿类型由 GPTMCTL 寄存器的 TnEVENT 位域决定。 在递减计数模式中的初始化期间、GPTMTnMATCHR 和 GPTMTnPMR 寄存器被配置为 GPTMTnILR 和 GPTMTnPR 寄存器以及 GPTMTnMATCHR 和 GPTMTnPMR 寄存器中的值之间的差值等于必须计数的边沿事件的数量。 在递增计数模式中、定时器从0x0开始计数到 GPTMTnMATCHR 和 GPTMTnPMR 寄存器中的值。
请注意、在执行递增计数时、GPTMTnPR 和 GPTMTnILR 的值必须大于 GPTMTnPMR 和 GPTMTnMATCHR 的值。 第961页的列出了相应的值
当定时器启用时加载到定时器寄存器中。
当软件写 GPTM 控制(GPTMCTL)寄存器的 TnEN 位时、定时器将启用以进行事件捕获。
GPTMTnMR REG2、REG3:
1:0 TnMR RW 0x0 GPTM Timer B 模式
TnMR 值如下定义:
值描述
0x0保留
0x1单次触发定时器模式
0x2周期定时器模式
0x3捕获模式
2 GPTM Timer B 捕获模式
TnCMR 值如下定义:
值描述
0边沿计数模式
1边沿计时模式
#define TIMER_TAMR_TACMR 0x00000004 // GPTM Timer A 捕获模式 (0x00000000)
#define TIMER_TAMR_M 0x00000003 // GPTM Timer A 模式
#define TIMER_TAMR_1_SHOT 0x00000001 //一次性计时器模式
#define TIMER_TAMR_TAMR_PERIOD 0x00000002 //周期定时器模式
#define TIMER_TAMR_TAMR_CAP 0x00000003 //捕获模式
#define TIMER_TBMR_TBCMR 0x00000004 // GPTM Timer B 捕获模式(0x00000000)
#define TIMER_TBMR_TBMR_M 0x00000003 // GPTM Timer B 模式
#define TIMER_TBMR_TBMR_1_SHOT 0x00000001 //单次触发定时器模式
#define TIMER_TBMR_TBMR_PERIOD 0x00000002 //周期定时器模式
#define TIMER_TBMR_TBMR_CAP 0x00000003 //捕获模式
您好 BP101:
[报价用户="BP101"]当软件写 GPTM 控制(GPTMCTL)寄存器的 TnEN 位时,定时器将启用以进行事件捕获。[/QUERP]
我真的看不到这句话有什么问题。 它只是说启用了 GPTM 定时器模块、并在 TnEN 位置位后为事件捕获做好准备。 确定性还有其他配置也需要进行。 例如、您需要通过将 TBCMR 位编程为0来选择边沿计时模式或边沿计数模式、并将1选择边沿计时模式。 您当然可以对措辞提出挑剔、但我个人很清楚、您还必须将 TnCMR 位编程为0以选择边沿计数模式。
我想知道为什么不 将 TivaWare API TimerConfigure 与 TIMER_CFG_A_CAP_COUNT 一同使用。 这将正确地为 EDGE_COUNT 模式配置计时器。 至于 #define TIMER_TBMR_TBCMR、任何 driverlib API 甚至都不使用该定义。 我同意、对于希望使用这些宏的用户、它本可以添加另一个#define 来区分边沿时间或边沿计数。