基于RT1170 使能PIT定时功能 (七)

本文主要是通过迁移的思维,记录本人初次使用NXP MCUXpresso SDK API进行BSP开发

MCUXpresso SDK PIT API 接口链接
  在MCUXpresso SDK 框架下提供了对PIT进行操作的接口。周期性的定时器比较简单,相对复杂的应用是组合定时器的使用。挑最简单的方式学习,先"知其然",再"知其所以然"。

1. 首先阅读原理图

  设计中有一个输出引脚,如下所示,可以通过PIT定时器,控制LED灯的显示:
USER_KEY1----GPIO_AD_35----GPIO10_IO02
基于RT1170 使能PIT定时功能 (七)

基于RT1170 使能PIT定时功能 (七)

2. SDK api 应用

2.1 引脚配置

LED引脚复用配置,GPIO输出记得配置方向和初始输出电平。 PIT不需要初始化相关的引脚。
基于RT1170 使能PIT定时功能 (七)

2.2 时钟配置

基于RT1170 使能PIT定时功能 (七)

从上图可以看出PIT1的时钟源从BUS_CLK_ROOT, PIT2的时钟源从BUS_LPSR_CLK_ROOT获取。
基于RT1170 使能PIT定时功能 (七)

在上图序号1中输入想要查找的时钟名称,就可以得到其时钟源的时钟路径。从上图可以分析得到,外部的24Mhz时钟通过倍频得到480Mhz SYS_PLL3_CLK, BUS_CLK_ROOT是从SYS_PLL3_CLK二分频得到的,并作为PIT的时钟源。

2.3 外设配置

在外设配置里,新建功能组BOARD_InitPeripheral_PIT1_Ch_0
基于RT1170 使能PIT定时功能 (七)

然后按上图序号操作,就可以进行PIT的驱动初始化配置界面。
基于RT1170 使能PIT定时功能 (七)

序号1:控制PIT1
序号2:DEBUG使能中断
序号3:使用默认配置
序号4:选择相应的时钟源,由于父时钟BUS_CLK_ROOT可选。
序号5:选择PIT通道和设置中断产生的周期。默认使用PIT1的通道0.
上述配置已满足了对周期性定时器的设置,当然最关键的事情在于编写中断处理函数,以满足应用的需求。
基于RT1170 使能PIT定时功能 (七)

点击上图基于RT1170 使能PIT定时功能 (七);即可生成中断函数横板,在当中添加相应的逻辑即可。如下所示:

/* PIT1_IRQn interrupt handler */
void PIT1_IRQHANDLER(void) {
  /*  Place your code here */
  /* Add for ARM errata 838869, affects Cortex-M4, Cortex-M4F
     Store immediate overlapping exception return operation might vector to incorrect interrupt. */
  #if defined __CORTEX_M && (__CORTEX_M == 4U)
    __DSB();
  #endif
}

在中断处理函数当中记得清楚中断标志位。

  /*  Place your code here */
  /* Clear interrupt flag.*/
  PIT_ClearStatusFlags(PIT1_PERIPHERAL, PIT1_CHANNEL_0, kPIT_TimerFlag);

2.4 验证测试

将生成的代码替换driver_examples\pit\cm7相对应的代码,最终达到同样的效果。目前代码没有放出来供各位参考.

4. 总结

本次config tool工程已提交到https://gitee.com/yilianghong/mex.git 供参考。详细修改见如下两次提交。
+AHB-03 New feature support PIT1 channel 0 driver init
+AHB-02 New feature support GPIO_AD_35 Pin output setting

上一篇:Elasticsearch——分页查询


下一篇:[论文阅读]PIT