nrf51822蓝牙学习笔记之实例分析PPI和SHORT

首先打开PPI程序看到如下  删除串口初始化部分方便查看:


 

 

一、初始化定时器的方式

 

TIMER可以处于两种模式:

1定时模式(Timer mode)

2计数模式(Counter mode)

两种模式都可以通过触发 启动或停止 任务(START task or STOP task)来启动或停止TIMER。

TIMER是计数方式是:count-up timer(向上计数):

Timer mode: 每个定时器周期(FTIMER) ,内部计数寄存器(Counter register ) +1.

Counter mode: 每次COUNT task被触发的时候,Counter register +1.此模式下,FTIMER和分频系数就不起作用了。

TIMER可以通过位宽寄存器(BITMODE register)设置计数最大值(maximum value). 分频和位宽寄存器(PRESCALER register and the BITMODE register)

只能在TIMER停止运行的时候对其进行修改,否则结果难以预料。

当计数超过了最大值时,计数寄存器会溢出,并自动从0重新开始计数。可通过执行CLEAR task 使TIMER清0。

比较和捕获(Compare/Capture):

比较:每个捕获比较寄存器(CC[0..3])都可以产生一个COMPARE event.当某个计数值计到与capture compare register CC[n]中的值相等时,就会产生一个COMPARE[n] event,这两个n 是对应着的。

捕获:每个capture/compare register都可以执行一个 capture task。每次capture[n] task被触发,计数值都会被复制到CCP[n]寄存器


这里Timer0  用的是定时模式而Timer1和Timer2都利用扩展一个比较事件用于触发比较计时器清零事件。如图



 

二、这里利用了一个SHORT寄存器:Shortcuts:

作用:链接同一个外设的事件(event)和任务(task)的快捷方式,当事件发生的时候可以通过Shortcuts直接触发任务。与PPI的功能类似,但是传播时间比PPI更短。

快捷方式是被预先定义了的,用户不可以通过软件配置,用户只能对其进行使能和关闭。一个快捷方式占1位,每个外设最多32个快捷方式。

 

现在开始看PPI初始化函数:


 

关于TIME的事件寄存器和任务寄存器之前的关系:


 

 三、关于task和event寄存器描述理解

1、外设TASK寄存器 :

作用: 用来触发外设的动作(actions),例如开始某个特定的行为。外设都能实现不同的Task,每个Task在该外设任务寄存器组(peripheral’s task register group) 中都有一个单独的寄存器

触发条件:可以通过软件写“1”到任务寄存器(task register)或者由外设本身或其他外设触发相应的任务信号来触发某个TASK

2、外设Event寄存器:

作用:用来通知外设或CPU某个事件发生了,例如某个外设的状态改变了。一个外设能够产生多个Event,每个Event在事件寄存器组(peripheral’s event register group)中都有一个单独的寄存器。

产生条件: 外设本身触发了某个事件信号(event signal),于是事件寄存器(event register)会更新用以反映该事件的发生。事件寄存器只有在软件向其写0的时候,才会被清零。


接下来的就看现象就知道PPI是怎么回事了。最后附一张PPI和SHORT关系图:



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值