【MSPM0G3519 系列】定时器级联时钟输入测频率【进阶版】
引言
考虑到前一篇文章 【MSPM0G3519系列】外部时钟输入测频 测频率的方式进入中断的频率过高,会影响程序主要代码的运行,故这次采用了更进一步的方法去测量:定时器级联采集外部信号时钟。话不多说,尽快开始。
配置
注意:
1.以下图中即完整级联配置,两个级联无需打开中断!
2. 主定时器比较触发配置为外部时钟输入触发,从定时器设置为事件触发
原因:两个65536的定时器级联,从\(2^{16}\)变成了\(2^{32}\),计数次数不用再担心溢出。
定时器级联计数方式:主定时器计数达到65535,从定时器计数加1,直到两个定时器达到65535。
主定时器配置

从定时器配置

捕获定时器配置
捕获定时器随便配置个1s或2s或0.5s中断即可,但是要注意在测出的频率上×2或÷2。

程序
点击查看代码
void TIMER_1_INST_IRQHandler(void)
{
switch (DL_TimerA_getPendingInterrupt(TIMER_1_INST)) {
case DL_TIMERA_IIDX_ZERO:
DL_TimerA_getTimerCount(COMPARE_0_INST);
freq = DL_TimerA_getTimerCount(COMPARE_0_INST) + DL_TimerA_getTimerCount(COMPARE_1_INST) * 65536;
// freq = 999; /* 测试频率 */
// printf("freq = %d Hz\r\n\r\n", freq);
timer_measure_freq_end_flag = true;
DL_TimerA_setTimerCount(COMPARE_1_INST, 0);
DL_TimerA_setTimerCount(COMPARE_0_INST, 0);
break;
default:
break;
}
}
定时器级联优势
- 可以获得更大的计数次数,不用担心溢出的问题。
- 使测得更准的外部时钟频率。
- 中断频率大大缩短,不影响主要程序的运行。
博客导航
本文来自博客园,作者:膝盖中箭卫兵,转载请注明原文链接:https://www.cnblogs.com/Skyrim-sssuuu/p/18990099

浙公网安备 33010602011771号
https://orcid.org/0000-0001-5102-772X