一、为什么在定时器中断里采样?
定时器能够提供精确的时间控制,因此可以确保采样在固定的时间间隔内进行。这对于诸如数据采集、信号处理等任务非常重要,因为这些任务通常需要在特定的频率下进行采样,以保证数据的准确性和可重复性。
中断机制可以提高系统的响应速度,因为中断可以立即响应定时器溢出事件,而不需要轮询定时器状态。
二、定时器配置
-
定时器初始化:
timer = timerBegin(a, b, true);
例如:timerBegin(0, 80, true)
初始化一个定时器。- 第一个参数 0表示使用定时器组 0 的定时器 0。
- 第二个参数
80
表示分频值,80 分频意味着定时器频率为 80 MHz / 80 = 1 MHz。 - 第三个参数
true
表示递增计数模式(默认为递减计数模式)。
-
关联中断处理函数:
timerAttachInterrupt(timer, &onTimer, true);
timerAttachInterrupt(timer, &onTimer, true)
将定时器中断处理函数onTimer
关联到定时器上。- 第一个参数是定时器指针。
- 第二个参数是中断处理函数的指针。
- 第三个参数
true
表示在发生中断时使用边沿触发。
-
设置定时器报警值