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

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

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

1. 首先阅读原理图

  设计中有一个输出引脚,如下所示,可以通过PIT定时器,控制LED灯的显示:
USER_KEY1----GPIO_AD_35----GPIO10_IO02

2. SDK api 应用

2.1 引脚配置

LED引脚复用配置,GPIO输出记得配置方向和初始输出电平。 PIT不需要初始化相关的引脚。
在这里插入图片描述

2.2 时钟配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ALDW12t8-1616058905035)(http://139.224.41.215:4999/server/../Public/Uploads/2021-03-11/6049b43794afd.png)]

从上图可以看出PIT1的时钟源从BUS_CLK_ROOT, PIT2的时钟源从BUS_LPSR_CLK_ROOT获取。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G5AmLZTM-1616058905038)(http://139.224.41.215:4999/server/../Public/Uploads/2021-03-11/6049b6c2574b5.png)]

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

2.3 外设配置

在外设配置里,新建功能组BOARD_InitPeripheral_PIT1_Ch_0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QjAe2EGU-1616058905042)(http://139.224.41.215:4999/server/../Public/Uploads/2021-03-11/6049b92bb380b.png)]

然后按上图序号操作,就可以进行PIT的驱动初始化配置界面。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ltLvrU4s-1616058905045)(http://139.224.41.215:4999/server/../Public/Uploads/2021-03-11/6049ba7d41cef.png)]

序号1:控制PIT1
序号2:DEBUG使能中断
序号3:使用默认配置
序号4:选择相应的时钟源,由于父时钟BUS_CLK_ROOT可选。
序号5:选择PIT通道和设置中断产生的周期。默认使用PIT1的通道0.
上述配置已满足了对周期性定时器的设置,当然最关键的事情在于编写中断处理函数,以满足应用的需求。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h97eaYMq-1616058905047)(http://139.224.41.215:4999/server/../Public/Uploads/2021-03-11/6049bcc6a7821.png)]

点击上图;即可生成中断函数横板,在当中添加相应的逻辑即可。如下所示:

/* 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

posted @ 2021-08-21 14:50  嵌入式实操  阅读(160)  评论(0编辑  收藏  举报