PIT 是 Periodic Interrupt Timer 的英文缩写。 PIT 定时器是32 位递减计数器,每次计时器达到 0 时它将生成一个触发脉冲并设置中断标志, 然后再次加载相应的启动值。 PIT 定时器常用于为其他外设提供周期信号,例如 ADC 利用 PIT 设置采样周期, DMA 可以使用 PIT 设置周期性的 DMA 传输。RT1052 的 PIT 模块是一个由四个定时器组成的定时器组,这些定时器可以独立配置使用,但是它们共享一个中断信号入口,共用计数时钟,如果对 LPC系列单片机熟悉的朋友可能会觉得这个和 MRT 定时器差不多,确实在使用上就跟 MRT 一样,不过 PIT 与 MRT 的区别在于 PIT可以设置为定时器连接模式,组成一个 64位定时器,当然这个功能可能不太用得上。
1.框图
如下图,参考手册当中 PIT 的框图如下:
这里的 trigger 主要用于触发其它外设,而不需要进入中断再去使用软件触发,最常用的可能就是触发 ADC 转换,也可以用于触发 DMA 传输;
框图中还标出了 Peripheral bus,这里是告诉用户读写 PIT 的寄存器是通过外围总线完成的。
2.时钟源
在 MCUXPresso 上打开时钟配置图,我们可以看到 PIT 的时钟源来自于PERCLK_ROOT,该时钟也是有主时钟分频而来,这里设置为 75MHz,
- 基本配置
在 MCUXpresso 中导出 PIT 例程,在此工程上修改:
① PIT 初始化:定义 timer_init 函数,初始化时钟源,配置分频系数,最后给到 PIT 的时钟频率为 75MHz ,然后使能 PIT 时钟,复位该模块
② 设置定时参数
使能 NVIC PIT 中断,这里根据传入参数配置对应定时器,定时单位为 1us ,计算 reload value ,使能模块中断,开启定时器
③ 中断处理
在中断中清除标志位,置位 flag,该实验只用了 channel0,如使用了其它通道可读取中断标志位来判断清除:
④ 主函数
初始化时钟、 LED ,然后初始化 timer,在 while(1) 中轮询标志位,翻转 LED 灯
编译下载后可以看到板子 LED 100ms 翻转一次状态。
参考资料:
《IMXRT1050RM》
https://www.nxp.com.cn/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1050-crossover-mcu-with-arm-cortex-m7-core:i.MX-RT1050
评论