我将产品上的一些计时器用于风扇转速计。 我使用拆分的16位捕捉计数器来配置定时器:
TimerConfigure (TIMER0_BASE、TIMER_CFG_16_bit_PAIR|TIMER_CFG_A_CAP_COUNT|TIMER_CFG_B_CAP_COUNT);
TimerConfigure (Timer1_base、timer_CFG_16_bit_pair|timer_CFG_A_CAP_COUNT);
然后、对于每个计时器和通道、我执行以下操作:
TimerControlEvent (timerBase、timer、timer_event_POS_EDGE); //在上升沿进行捕捉
TimerLoadSet (timerBase、timer、0xFFFF); //加载具有最大16位值的定时器
但是、如果我加载0xFFFF、计时器永远不会开始计数、即使当我知道风扇正在旋转并且 GPIO 正在接收事件时也是如此。 每个定时器 TimerValueGet ()始终为0xFFFF。 如果我将加载值减小到0xFFFE、一切都正常。 定时器开始递减计数、然后在定时器到达零时返回0xFFFE。 这些文档没有提到 TimerLoadSet 的有效范围。
我正在使用:
//$TI 发行版:F28M36x 支持库 v207美元