PIT定时器(更新中断)

1、宏定义

#define PIT_CHANNAL             kPIT_Chnl_0 //通道0
#define PIT_DELAY               500000      //500MS
#define PIT_SOURCE_CLOCK        CLOCK_GetFreq(kCLOCK_BusClk)//获取定时器时钟源频率#define PIT_INTERRUPT_CHANNEL   PIT0_IRQn       //中断向量号
#define PIT_INTERRUPTHANDLE     PIT0_IRQHandler //中断服务函数

用宏定义的好处就是,下次要修改中断通道的时候,只需要修改宏定义就可以了

2、PIT初始化

void PIT_INIT(void)
{pit_config_t config;//定义初始化句柄CLOCK_EnableClock(kCLOCK_Pit0);//PIT时钟初始化config.enableRunInDebug = true;//调试时PIT正常运行PIT_Init(PIT,&config);//初始化PIT_SetTimerPeriod(PIT,PIT_CHANNAL,USEC_TO_COUNT(PIT_DELAY,PIT_SOURCE_CLOCK));//设置定时时间        PIT_EnableInterrupts(PIT,PIT_CHANNAL,kPIT_TimerInterruptEnable);//使能中断EnableIRQ(PIT_INTERRUPT_CHANNEL);//使能定时器中断PIT_StartTimer(PIT, PIT_CHANNAL);//开启定时器
}

USEC_TO_COUNT是输入要延时的时间和时钟源频率算出自动重装载值

#define USEC_TO_COUNT(us, clockFreqInHz) (uint64_t)((uint64_t)us * clockFreqInHz / 1000000U)

时钟源频率可以用CLOCK_GetFreq函数实现

CLOCK_GetFreq(kCLOCK_BusClk) //PIT挂载在BUS时钟总线上

kPIT_TimerInterruptEnable用source insight跳进去可以看到定义,即中断使能。

typedef enum _pit_interrupt_enable
{kPIT_TimerInterruptEnable = PIT_TCTRL_TIE_MASK, /*!< Timer interrupt enable*/
} pit_interrupt_enable_t;

3、中断服务函数

此中断函数实现LED灯的翻转

void PIT_INTERRUPTHANDLE(void)//中断服务函数
{PIT_ClearStatusFlags(PIT, PIT_CHANNAL, kPIT_TimerFlag);//清楚中断标志位if(PIT_COUNT>50000)PIT_COUNT = 0;PIT_COUNT++;if(PIT_COUNT%2)GPIO_PinWrite(LED_GPIOINSTANCE,LED1,OFF);else GPIO_PinWrite(LED_GPIOINSTANCE,LED1,ON);
}

编写中断函数记得是无返回类型,无形参就可以了。

学习心得:多借助source insight来看代码,真的能省去很多找函数的时间。

用SDK包开发K66FX18学习笔记(2)相关推荐

  1. 用SDK包开发K66FX18学习笔记(1)

    任何单片机,从点灯开始(GPIO输出) 1.LED初始化(fsl_gpio.h) void LED_INIT(void) {gpio_pin_config_t LEDconfig;//GPIO初始化句 ...

  2. 用SDK包开发K66FX18学习笔记(5)

    ADC采集(光敏电阻) 1.宏定义 #define ADC0_INSTANCE ADC0 #define ADC1_GPIO GPIOA #define ADC1_PORT PORTA #define ...

  3. 用SDK包开发K66FX18学习笔记(4)

    FTM脉冲输入捕获 1.宏定义 #define INCAP_INSTANCE FTM1 //端口号 #define INCAP_CHANNEL0 kFTM_Chnl_0 //通道号 #define I ...

  4. 用SDK包开发K66FX18学习笔记(3)

    FTM输出PWM 1.宏定义 #define FTM_INSTANCE FTM2 //FTM端口 #define FTM_CHANNAL0 0U //FTM通道 #define FTM_CHANNAL ...

  5. iTOP-RK3568开发板学习笔记(1)编译+烧录系统

    迅为 RK3568 开发板学习笔记 文章目录 准备开发环境 复制 Linux SDK 编译 Buildroot 烧录固件 准备开发环境 将 ITOP-RK3568 资料包中的虚拟机开发环境解压到自己的 ...

  6. 多人网络游戏服务器开发基础学习笔记 II: 帧同步 | 游戏客户端预测原理分析 | FPS 游戏状态同步

    这篇是对书本 网络多人游戏架构与编程 的学习第二篇(第一篇:多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | ...

  7. “物联网开发实战”学习笔记-(四)智能音箱制作和语音控制

    "物联网开发实战"学习笔记-(四)智能音箱制作和语音控制 这次来造一个属于自己的智能音箱,这里详细介绍了智能音箱的语音控制的实现. 智能音箱的技术架构 智能音箱主要涉及拾音.前端信 ...

  8. 涂鸦LZ201-CN开发板学习笔记(一)

    涂鸦LZ201-CN开发板学习笔记(一) 前言 一.引出 二.准备流程 1.购买开发板 2.创建产品 (1)创建产品 (2)功能定义 (3)设备交互 (4)硬件开发 3.检查开发板 第一步: 第二步: ...

  9. “物联网开发实战”学习笔记-(二)手机控制智能电灯

    "物联网开发实战"学习笔记-(二)手机控制智能电灯 如果搭建好硬件平台后,这一次我们的任务主要是调试好智能电灯,并且连接到腾讯云的物联网平台. 腾讯云物联网平台 腾讯物联网平台的优 ...

最新文章

  1. Java的自动装箱与自动拆箱
  2. 分支合并 Fork-Join 框架
  3. SGS 0.9.7 协议解析
  4. java面试题二十 try catch
  5. 前台文件_欧木瑾怎么定制办公前台?
  6. docker Redis集群
  7. 第一:Python安装需要的第三方库时,命令行输入pip提示不是内部或外部命令
  8. 查看matlab当前路径,MATLAB R2012a 的当前路径和路径搜索
  9. UML类与类的关系, 总算理解了关联和依赖在实际中的区别
  10. 代码整洁之道:想要成为一个更好的程序员,你要注意这些方面
  11. MySQL读写分离的三种实现方案
  12. Texture贴图材质资源网站分享
  13. 大一c语言挂科分数烟台大学,知乎烟大 | 在烟大挂科是一种什么体验
  14. 动力节点『lol版』Java学习路线图(五)Java框架阶段
  15. 智慧实验室综合安全管理系统(高校版)、危化品管理、设备预约等
  16. java全景图片切割 全景,基于Three.js实现360度全景图片
  17. java银联在线支付开发_银联在线支付案例代码
  18. Microsoft Edge 中的ie浏览器图标、右击新标签页打开功能的关闭方法
  19. 早上第一杯别喝四种水
  20. 可视化建站cms_wordpress建站,盘点有哪些经典主题值得推荐?

热门文章

  1. springboot实现数据库数据导出生成Excel报表
  2. 如何评价一个新技术——以Docker为例
  3. frps port unavailable
  4. Hive 自定义函数编写(UDF,UDAF,UDTF)
  5. python遇到错误跳过_python如何设置报错跳过?
  6. Visual paradigm试用版绘制ER图时如何去水印
  7. VulnHub - Pluck靶机
  8. 微信小程序使用VANT filed 组件 input框内文字省略
  9. 作为一个程序员,如何保持优秀
  10. Siege(开源Web压力测试工具)——多线程编程最佳实例