博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[nRF51822] 10、基础实验代码解析大全 · 实验15 - RTC
阅读量:6225 次
发布时间:2019-06-21

本文共 1761 字,大约阅读时间需要 5 分钟。

 

 

一、实验内容:

  配置NRF51822 的RTC0 的TICK 频率为8Hz,COMPARE0 匹配事件触发周期为3 秒,并使能了TICK 和COMPARE0 中断。

  • TICK 中断中驱动指示灯D1 翻转状态, 即指示灯D1 以8Hz 的速率翻转状态
  • COMPARE0 中断中点亮指示灯D2

 

二、nRF51822的内部RTC结构:

  NRF51822 有两个RTC 时钟:RTC0,RTC1。两个RTC 均为24 位,使用LFCLK 低频时钟,并带有12 位分频器,可产生TICK、compare 和溢出事件。RTC 原理框图如下图所示:

 

三、计数器递增频率的计算:

                       fRTC[KHz]=32.768/(PRESCALER+1)

  由上式可以看出,设置递增频率也就是设置相应的PRESCALER,如设置递增频率为8Hz。那么,PRESCALER 值如下:

    PRESCALER = round(四舍五入) (32.768 kHz / 8 Hz) – 1 = 4095

  此时,递增周期是:125ms。

 

四、核心源码解析:

main:

1 int main(void) 2 { 3     leds_config(); 4     lfclk_config(); 5     rtc_config(); 6  7     while (true) 8     { 9         __SEV();10         __WFE();11         __WFE();12     }13 }

 

RTC初始化:

1 static void rtc_config(void) 2 { 3     uint32_t err_code; 4  5     //Initialize RTC instance 6     err_code = nrf_drv_rtc_init(&rtc, NULL, rtc_handler);//初始化RTC 7     APP_ERROR_CHECK(err_code); 8  9     //Enable tick event & interrupt10     nrf_drv_rtc_tick_enable(&rtc, true);//使能tick事件11 12     //Set compare channel to trigger interrupt after COMPARE_COUNTERTIME seconds13     err_code = nrf_drv_rtc_cc_set(&rtc, 0, COMPARE_COUNTERTIME * RTC0_CONFIG_FREQUENCY, true);14     APP_ERROR_CHECK(err_code);15 16     //Power on RTC instance17     nrf_drv_rtc_enable(&rtc);18 }

 

RTC中断回调函数:

1 /** @brief: Function for handling the RTC0 interrupts. 2  * Triggered on TICK and COMPARE0 match. 3  */ 4 static void rtc_handler(nrf_drv_rtc_int_type_t int_type) 5 { 6     if (int_type == NRF_DRV_RTC_INT_COMPARE0) 7     { 8         nrf_gpio_pin_toggle(COMPARE_EVENT_OUTPUT); 9     }10     else if (int_type == NRF_DRV_RTC_INT_TICK)11     {12         nrf_gpio_pin_toggle(TICK_EVENT_OUTPUT);13     }14 }

 

@nRF51822基础实验系列:


本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/5753994.html,如需转载请自行联系原作者

你可能感兴趣的文章
[转]VirtualBox添加新硬盘
查看>>
jQuery
查看>>
20170322Linux
查看>>
NOIp 2014 #1 生活大爆炸版石头剪刀布 Label:模拟
查看>>
判断相同树或者对称树
查看>>
foundation学习
查看>>
oracle之 获取建表ddl语句
查看>>
oracle 之 安装10.2.0.1 且 升级到 10.2.0.4
查看>>
Java培训学习笔记(四):简单小总结
查看>>
NYOJ467中缀式变后缀式
查看>>
视图层 表格里面的 的超链接
查看>>
Linux里面非常重要的目录
查看>>
angular-seed — AngularJS种子项目
查看>>
开发人员准确理解技术需求:用户想得与说的不一样
查看>>
OpenCV 颜色空间转换参数CV_BGR2GRAY改变
查看>>
Allegro PCB Design GXL (legacy) 从dxf文件中导入板框
查看>>
手撸系列之——ORM(对象关系映射)
查看>>
iOS - OC RunLoop 运行循环/消息循环
查看>>
php smarty使用..
查看>>
FLV文件格式解析
查看>>