IMX6UL的定时系统学习记录以及理解(原子哥)

我们在这一章会用到的是EPIT,Enhanced Periodic Interrupt Timer,加强的周期性中断定时器。

它所起到的作用听它的名字就能猜出来,它会每隔一段时间中断一次。

EPITx_CR是控制模式的寄存器

它有两种模式:set-and-forget与free-running

set-and-forget:我们提供一个初值,比如1000,它就开始倒计时,从999到0,接着提醒你一下,然后继续从999倒数到0;

free-running:我们不用提供初值,它会从0XFFFFFFFF倒数到0,然后提醒你一下,像沙漏一样翻转,继续从0XFFFFFFFF倒数到0。

接着我们看代码:

常规初始化,先清零我们的CR模式寄存器,接着输入初始化参数

其中LR是加载寄存器,CMPR是比较寄存器,

具体可查看文首的结构图

我们如何判断是否到达中断时间呢?

是不断地去观察EPIT_SR的值,如果是1则到达中断时间,但是接着我们要手动清除该中断标志位噢!

我们在初始化的时候设定了时钟源的频率为66MHz

根据上述公式计算value的值,我们设定Tout是0.01s,即10ms,设定分频值为0,即1分频,

那么我们的value=Tclk*0.01

timarder!!!(他妈的)

在做定时器按键消抖的时候被绕进代码里面了,终于理解了!

首先我们在init的时候已经打开了key所在GPIO口的中断功能

注意在这里我们已经初始化了,注意倒数第四行的gpio1_16_31_irqhandler,当按键按下后,我们会转到函数

中断会打开restart定时器开关,定时10ms,接着转到

在10ms后,定时器又产生中断,先判断是否结束了,如果定时结束了就关闭定时器,然后判断是否电平改变,因为如果按键抖动的话电平就没有改变哇,所以判断一下是不是,如果是改变了,那就反转蜂鸣器。

就是这样!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值