跳转至

systick

systick 提供系统滴答定时器功能,支持计数值获取、秒/毫秒/微秒级时间查询以及阻塞延时操作。

头文件清单

#include "include/driver/systick.h"

接口清单

接口名称 功能简述
uapi_systick_init 初始化Systick模块
uapi_systick_deinit 去初始化Systick模块
uapi_systick_count_clear 清除Systick计数值
uapi_systick_get_count 获取Systick当前计数值
uapi_systick_get_s 获取Systick当前计数秒值
uapi_systick_get_ms 获取Systick当前计数毫秒值
uapi_systick_get_us 获取Systick当前计数微秒值
uapi_systick_delay_count 按计数值延时
uapi_systick_delay_s 按秒数延时
uapi_systick_delay_ms 按毫秒数延时
uapi_systick_delay_us 按微秒数延时
uapi_systick_suspend 挂起Systick
uapi_systick_resume 恢复Systick

Functions

uapi_systick_init

void uapi_systick_init(void)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 初始化Systick硬件定时器模块
  • 重复调用时直接返回
  • 初始化完成后,Systick计数器开始运行,可调用其他Systick接口

前置条件

  • Systick模块未被初始化,或已通过uapi_systick_deinit()去初始化
  • 硬件Systick定时器资源可用

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SYSTICK 编译参与宏 控制systick.c参与编译 n

uapi_systick_deinit

void uapi_systick_deinit(void)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 去初始化Systick模块,停止Systick定时器运行
  • 未初始化时调用直接返回
  • 去初始化后Systick计数器停止,需重新初始化后方可使用其他接口

前置条件

  • Systick模块已通过uapi_systick_init()初始化完成
  • 硬件Systick定时器资源可用

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SYSTICK 编译参与宏 控制systick.c参与编译 n

uapi_systick_count_clear

errcode_t uapi_systick_count_clear(void)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 清除Systick计数值,将计数器归零
  • 清除后,后续获取的时间值从零开始重新计算
  • 未初始化时调用返回ERRCODE_SYSTICK_NOT_INIT

前置条件

  • Systick模块已通过uapi_systick_init()初始化完成
  • 硬件Systick定时器资源可用

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 计数清除成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SYSTICK 编译参与宏 控制systick.c参与编译 n

uapi_systick_get_count

uint64_t uapi_systick_get_count(void)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 获取Systick当前原始计数值
  • 若使能低功耗补偿(CONFIG_SYSTICK_SUPPORT_LPM),返回值包含休眠补偿计数
  • 未初始化时返回0

前置条件

  • Systick模块已通过uapi_systick_init()初始化完成
  • 硬件Systick定时器资源可用

返回值

  • 返回类型:uint64_t
返回值 文字含义 触发场景
uint64_t Systick当前计数值 读取计数成功;未初始化时返回0

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SYSTICK 编译参与宏 控制systick.c参与编译 n
CONFIG_SYSTICK_SUPPORT_LPM 特性宏 支持低功耗休眠补偿特性 n

uapi_systick_get_s

uint64_t uapi_systick_get_s(void)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 获取Systick当前计数对应的秒值
  • 若使能RC校准(CONFIG_ENABLE_RC_CALIBRATION),通过校准接口获取微秒值后转换为秒
  • 未初始化时返回0

前置条件

  • Systick模块已通过uapi_systick_init()初始化完成
  • 硬件Systick定时器资源可用

返回值

  • 返回类型:uint64_t
返回值 文字含义 触发场景
uint64_t Systick当前计数秒值 读取成功;未初始化时返回0

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SYSTICK 编译参与宏 控制systick.c参与编译 n
CONFIG_ENABLE_RC_CALIBRATION 特性宏 支持RC校准特性 n

uapi_systick_get_ms

uint64_t uapi_systick_get_ms(void)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 获取Systick当前计数对应的毫秒值
  • 若使能RC校准(CONFIG_ENABLE_RC_CALIBRATION),通过校准接口获取微秒值后转换为毫秒
  • 未初始化时返回0

前置条件

  • Systick模块已通过uapi_systick_init()初始化完成
  • 硬件Systick定时器资源可用

返回值

  • 返回类型:uint64_t
返回值 文字含义 触发场景
uint64_t Systick当前计数毫秒值 读取成功;未初始化时返回0

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SYSTICK 编译参与宏 控制systick.c参与编译 n
CONFIG_ENABLE_RC_CALIBRATION 特性宏 支持RC校准特性 n

uapi_systick_get_us

uint64_t uapi_systick_get_us(void)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 获取Systick当前计数对应的微秒值
  • 若使能RC校准(CONFIG_ENABLE_RC_CALIBRATION),通过校准接口直接获取微秒值
  • 未初始化时返回0

前置条件

  • Systick模块已通过uapi_systick_init()初始化完成
  • 硬件Systick定时器资源可用

返回值

  • 返回类型:uint64_t
返回值 文字含义 触发场景
uint64_t Systick当前计数微秒值 读取成功;未初始化时返回0

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SYSTICK 编译参与宏 控制systick.c参与编译 n
CONFIG_ENABLE_RC_CALIBRATION 特性宏 支持RC校准特性 n

uapi_systick_delay_count

errcode_t uapi_systick_delay_count(uint64_t c_delay)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 按Systick计数值进行阻塞延时,等待指定计数值的时间间隔
  • 延时期间为阻塞等待,不可用于要求实时响应的场景
  • 未初始化时调用返回ERRCODE_SYSTICK_NOT_INIT

前置条件

  • Systick模块已通过uapi_systick_init()初始化完成
  • 硬件Systick定时器资源可用

入参

名称 参数类型 详细说明 约束取值范围
c_delay uint64_t 延时目标计数值 0 ~ 0xFFFFFFFFFFFFFFFF

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 延时完成
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SYSTICK 编译参与宏 控制systick.c参与编译 n

uapi_systick_delay_s

errcode_t uapi_systick_delay_s(uint32_t s_delay)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 按秒数进行阻塞延时
  • 延时期间为阻塞等待,不可用于要求实时响应的场景
  • 未初始化时调用返回ERRCODE_SYSTICK_NOT_INIT

前置条件

  • Systick模块已通过uapi_systick_init()初始化完成
  • 硬件Systick定时器资源可用

入参

名称 参数类型 详细说明 约束取值范围
s_delay uint32_t 延时秒数 0 ~ 0xFFFFFFFF

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 延时完成
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SYSTICK 编译参与宏 控制systick.c参与编译 n

uapi_systick_delay_ms

errcode_t uapi_systick_delay_ms(uint32_t m_delay)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 按毫秒数进行阻塞延时
  • 延时期间为阻塞等待,不可用于要求实时响应的场景
  • 未初始化时调用返回ERRCODE_SYSTICK_NOT_INIT

前置条件

  • Systick模块已通过uapi_systick_init()初始化完成
  • 硬件Systick定时器资源可用

入参

名称 参数类型 详细说明 约束取值范围
m_delay uint32_t 延时毫秒数 0 ~ 0xFFFFFFFF

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 延时完成
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SYSTICK 编译参与宏 控制systick.c参与编译 n

uapi_systick_delay_us

errcode_t uapi_systick_delay_us(uint32_t u_delay)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 按微秒数进行阻塞延时
  • 延时期间为阻塞等待,不可用于要求实时响应的场景
  • 未初始化时调用返回ERRCODE_SYSTICK_NOT_INIT

前置条件

  • Systick模块已通过uapi_systick_init()初始化完成
  • 硬件Systick定时器资源可用

入参

名称 参数类型 详细说明 约束取值范围
u_delay uint32_t 延时微秒数 0 ~ 0xFFFFFFFF

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 延时完成
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_SYSTICK 编译参与宏 控制systick.c参与编译 n

uapi_systick_suspend

errcode_t uapi_systick_suspend(uintptr_t arg)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 挂起Systick定时器,保存当前计数到休眠补偿变量中
  • 若arg非NULL,通过arg传出当前计数值供调用者保存
  • 保存挂起时的计数值,供恢复时进行补偿计算

前置条件

  • Systick模块已通过uapi_systick_init()初始化完成
  • CONFIG_SYSTICK_SUPPORT_LPM宏已使能

出参

名称 数据类型 输出说明
arg uint64_t * 挂起时的计数值,由调用方分配内存、函数填充;arg为NULL时不输出

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 挂起成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_SYSTICK_SUPPORT_LPM 功能宏 支持Systick低功耗模式suspend/resume功能 n

uapi_systick_resume

errcode_t uapi_systick_resume(uintptr_t arg)

头文件清单

#include "include/driver/systick.h"

功能说明

  • 恢复Systick定时器,重新初始化并清除计数器,补偿休眠期间的计数值
  • 将休眠前计数与休眠补偿计数累加
  • 恢复后Systick计数器继续运行

前置条件

  • Systick模块已通过uapi_systick_suspend()挂起
  • CONFIG_SYSTICK_SUPPORT_LPM宏已使能

入参

名称 参数类型 详细说明 约束取值范围
arg uintptr_t 指向uint64_t类型变量的指针,传入休眠期间补偿计数值 非NULL,指向有效uint64_t内存

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_SUCC(0x00) 执行成功 恢复成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_SYSTICK_SUPPORT_LPM 功能宏 支持Systick低功耗模式suspend/resume功能 n

Type definitions

errcode_t

typedef uint32_t errcode_t;

使用说明

作为uapi_systick_count_clear、uapi_systick_delay_count、uapi_systick_delay_s、uapi_systick_delay_ms、uapi_systick_delay_us、uapi_systick_suspend、uapi_systick_resume接口的返回值类型 [SDK公共基础类型]

Macros

ERRCODE_SUCC [SDK公共共享宏]

#define ERRCODE_SUCC                                        0UL

ERRCODE_SYSTICK_NOT_INIT [SDK公共共享宏]

#define ERRCODE_SYSTICK_NOT_INIT                            0x80001160