文档章节

NRF51822之定时器

h
 houj
发布于 2014/09/30 15:54
字数 486
阅读 219
收藏 1

NRF51822之定时器

一、了解

  NRF51822的定时器是运行在系统的高频率下面的, HFCLK = 16 MHz ,包括一个四位的分频器,用来对HFCLK 进行分频。也就是说,最大16分频。
  由于其丰富的定时器任务、时间和中断特点,所以可编程外设互连系统能够与任何外设进行互连使用时,进行定时或计数。可编程外设互连系统(PPI)能用使用任何一个GPIO口输出周期性的信号和PWM波。在同一时间内,输入或者输出的数目收到GPIOTE 模块的数目的限制。
  而GPIOTE则是GPIO 任务事件块,用来规定当前能用多少GPIO的任务事件。
  NRF51822有三个定时器。  一个24位的,两个16位的。
Instance Bit-width Capture/Compare regiters
TIMER0 24 4
TIMER1 16 4
TIMER2 16 4

二、程序

/*
 *NRF51822 共有三个定时器,TIMER0,TIMER1,TIMER2
 */
/*
 * 利用定时器进行定时 ,单位ms
 */
void NRF_Timer_Delay_ms(timer_t timer, uint16_t volatile Number_ms){
   volatile NRF_TIMER_Type *p_timer = Timer_Init(timer); //定义一个定时器指针,并完成初始化
   p_timer->MODE = TIMER_MODE_MODE_Timer; //定时器模式,还有另一种模式,计数器,Counter
   p_timer->PRESCALER = 9;               //预分频,f=16M/2^(prescale),最大为9,即最大512分频
   p_timer->BITMODE = TIMER_BITMODE_BITMODE_16Bit; //定时器位宽
   p_timer->TASKS_CLEAR = 1;             //清除任务
   //最大分频为512后得到的周期是32us, 再要乘以31.25才得到ms
   p_timer->CC[0] = Number_ms * 31;
   p_timer->CC[0] += Number_ms  4;
   p_timer->TASKS_START = 1;    //开启定时器
   while (p_timer->EVENTS_COMPARE[0] == 0){
      //wait
   }
   p_timer->EVENTS_COMPARE[0] = 0;
   p_timer->TASKS_STOP = 1; //停止定时器
}

/*
 * 定时器初始化 ,使用16M高频晶振
 */
static volatile NRF_TIMER_Type *Timer_Init(timer_t timer){
   volatile NRF_TIMER_Type *p_timer; //这里要与NRF_TIMER_Type相对应
   //启动16M晶振
   NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
   NRF_CLOCK->TASKS_HFCLKSTART = 1;
   while (NRF_CLOCK->EVENTS_HFCLKSTARTED == 0){
      //等待起振
   }
   //返回指向该定时器的地址的指针
   switch (timer){
   case TIMER0:
      p_timer = NRF_TIMER0;
      break;
   case TIMER1:
      p_timer = NRF_TIMER1;
      break;
   case TIMER2:
      p_timer = NRF_TIMER2;
      break;
   default:
      p_timer = 0;
      break;
   }
   return p_timer;
}

© 著作权归作者所有

h
粉丝 9
博文 81
码字总数 57985
作品 0
长沙
技术主管
私信 提问
[nRF51822] 9、基础实验代码解析大全 · 实验12 - ADC

一、本实验ADC 配置 分辨率:10 位。 输入通道:5,即使用输入通道AIN5 检测电位器的电压。 ADC 基准电压:1.2V。 二、NRF51822 ADC 管脚分布   NRF51822 的ADC 共有8 个输入通道,对应的管...

史迪奇2号
2018/01/06
0
0
蓝牙 Nordic nrf51822 评估板 入门

参考: 青云蓝牙光盘V4.17.青云开发板原理图青云蓝牙nrf51822开发板.pdf 青云蓝牙光盘V4.16.青云系列教程青风出品1:前期预备篇:如何开发nrf51822硬件篇:QY-NRF51822硬件详解.pdf 青云蓝牙...

wowocpp
2018/05/07
0
0
介绍一颗NORDIC 低功耗蓝牙芯片-NRF51822系列

nRF51822 是功能强大、高灵活性的多协议 SoC,非常适用于 Bluetooth® 低功耗和 2.4GHz 超低功耗无线应用。 nRF51822 根据配备 256kB flash + 16kB RAM 的 32 位 ARM® Cortex™ M0 CPU 而建...

wx5b49ba1fb5075
2018/07/14
0
0
NORDIC和TI 蓝牙4.0芯片,现在价格优惠啦,以下型号实单可以谈

当你看到以下型号有变动,对的你没有看错,价格实惠 CC2541F256RHAR 45k 16+ 原装现货 实单价格来谈 CC2540F256RHAR 150k 16+ 原装现货 实单价格可以来谈 CC2530F256RHAR 50k 17+ 原装现货 ...

sale60
2017/07/10
49
0
nrf51822 另外一个板子

overheat 2013年12月9日20:30到12月11日21:30,过期或售完自动下架。 描述: CPU:nRF51822 传感器:MPU6050(加速度计、陀螺仪) 用户界面:5个独立可编程LED,2个用户按键 GPIO:32 下载方...

wowocpp
2018/05/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
3
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
12
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
13
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0
Django的ChoiceField和MultipleChoiceField错误提示,选择一个有效的选项

在表单验证时提示错误:选择一个有效的选项 例如有这样一个表单: class ProductForm(Form): category = fields.MultipleChoiceField( widget=widgets.SelectMultiple(), ...

编程老陆
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部