Nordic Timer
Timer的简单介绍
Timer的模式
- Timer
 - Counter
 
Timer的时钟源
Timer的时钟源来源于HFCLK,可以被4bit的分频寄存器分频处理;
Ftimer = 16Mhz/2^PRESCALER
当Ftimer小于1Mhz的时候,系统会自动切换到PCLK 1Mhz,节省功耗;
PRESCALER:Timer模式下,用于分频
BITMODE:用于修改Timer的最大值
以上两个参数只有在Timer Stop的情况下,才可以修改。
代码分析
Timer初始化函数 nrfx_timer_init
nrf_drv_timer_t 定义Timer句柄
nrf_drv_timer_config_t Timer初始化配置结构体
- frequency 选择频率3k – 16Mhz
 - mode:模式 Timer&counter&low-power counter
 - bit_width:位宽:8&16&24&32
 - interrupt_priority:中断优先级
 - p_context :中断服务函数
 
nrfx_timer_event_handler_t :Timer事件服务函数
Timer 将ms转换成计时器滴答函数 nrf_drv_timer_ms_to_ticks
- nrfx_timer_t 定义的Timer句柄
 - 待转换的ms值
 
Timer 将定时器设置为比较模式函数 nrf_drv_timer_extended_compare
- nrfx_timer_t 定义Timer句柄
 - nrf_timer_cc_channel_t 比较的通道数 0–5
 - cc_value 比较值
 - nrf_timer_short_mask_t:技术器对应的编号
 - enable_int:使能或者禁止比较通道中断
 
Timer 使能函数 nrf_drv_timer_enable
- nrfx_timer_t 定义Timer句柄
 
代码移植
- 添加Timer头文件 
#include "nrf_drv_timer.h 添加库文件
- nRF5_SDK_15.3.0_59ac345\modules\nrfx\drivers\include nrf_timer.c
 - nRF5_SDK_15.3.0_59ac345\integration\nrfx\legacy nrf_drv_timer.h
 
修改sdk_config.h,增加Timer相关宏定义
- 修改Main主函数相关参数