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主函数相关参数