Tick
该示例通过使用 RTC 外设实现 TICK 定时功能。
每经过 TICK 定时就会进入触发 RTC 中断,并打印相关 log 信息。
环境需求
该示例的环境需求,可参考 环境需求。
配置选项
可配置如下宏修改 RTC 预分频值。
#define RTC_PRESCALER_VALUE (3200-1) /*< Set this macro to modify the RTC Prescale value. RTC_CLK = 32k / 3200 = 10Hz. */
编译和下载
该示例的编译和下载流程,可参考 编译和下载。
测试验证
TICK 时间到后(0.1秒),触发 RTC 中断,打印中断信息。
RTC_Handler: RTC_INT_TICK
代码介绍
该章节主要介绍示例中的初始化和相应功能实现的代码和流程说明。
源码路径
工程文件和源码路径如下:
工程路径:
sdk\samples\peripheral\rtc\tick\proj
源码路径:
sdk\samples\peripheral\rtc\tick\src
初始化
RTC 初始化的流程如图所示:

RTC 初始化流程
调用
RTC_DeInit()
,复位 RTC 外设。调用
RTC_SetPrescaler()
, 设置 RTC 预分频系数。调用
RTC_INTConfig()
,使能 RTC TICK 中断,调用RTC_NvCmd()
,使能 RTC 中断功能。NVIC 相关配置可参考 中断配置。调用
RTC_ResetCounter()
复位 RTC 计数器,调用RTC_Cmd()
使能 RTC 外设。
void driver_rtc_init(void) { RTC_DeInit(); RTC_SetPrescaler(RTC_PRESCALER_VALUE); RTC_INTConfig(RTC_INT_TICK, ENABLE); /* Config RTC interrupt */ NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel = RTC_IRQn; NVIC_InitStruct.NVIC_IRQChannelPriority = 2; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStruct); RTC_NvCmd(ENABLE); /* Start RTC */ RTC_ResetCounter(); RTC_Cmd(ENABLE); }
功能实现
每经过 TICK 设定时间,都会触发 RTC 中断,在中断处理函数内打印相关状态,并清除中断标志位。
void RTC_Handler(void) { /* RTC tick interrupt handle */ if (RTC_GetINTStatus(RTC_INT_TICK) == SET) { DBG_DIRECT("RTC_Handler: RTC_INT_TICK"); // Add application code here RTC_ClearTickINT(); } }