• 基于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_examplespitcm7相对应的代码,最终达到同样的效果。目前代码没有放出来供各位参考.

    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

  • 相关阅读:
    Linux C下的正则表达式
    中英文i18 vue参数传递
    es map的用法
    webpack中publicPath问题
    prop中如何获取vue data中的数据 中英文方案
    利用map reduce方法将对象转成数组
    WPF 踩坑笔记2
    WPF 踩坑笔记1
    RabbitMQ 高阶用法 之 x-expire 过期时间设置
    JANUSEC应用网关1.0发布,提供一站式安全交付能力
  • 原文地址:https://www.cnblogs.com/lianghong881018/p/15169552.html
Copyright © 2020-2023  润新知