os_tick_config

所属模块:系统配置 | 类型:定时器配置函数

API Metadata

函数ID:os_tick_config
模块:system
类型:tick configuration
嵌套深度:1

函数简介

os_tick_config 用于配置系统定时器的时间片参数,包括时间片数量与单个时间片长度。

该函数是系统调度器初始化的重要接口,用于建立基础的 tick 中断节拍机制。

配置完成后,系统将基于 tick_count 进行任务调度与时间管理。

函数原型

char os_tick_config(u8 slice_count, u16 tick_value);

参数说明

参数 说明
slice_count 时间片数量(系统调度周期)
tick_value 单个时间片对应的计数值(定时器重装值)

返回值

0 表示配置成功,-1 表示参数非法或配置失败。

源码实现

/*------------------------------------------------------------------------ | FILE DESCRIPTION | ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | - File name : tick_config.c | - Author : 谭舒 | - Update date : 2026-09-19 | - Copyright(C) : 2026 HRTOS. All rights reserved. ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | INCLUDES | ------------------------------------------------------------------------*/ #include "hrtos_internal.h" /*------------------------------------------------------------------------ | API FUNCTIONS | ------------------------------------------------------------------------*/ /** * @brief 配置系统 Tick 定时参数。 * * @param[in] slice_count 时间片包含的 Tick 数量。 * @param[in] tick_value Timer0 定时器计数值。 * * @return 操作结果。 * @retval 0 Tick 定时参数配置成功。 * @retval -1 参数无效。 * * @note 配置系统时间片参数及 Timer0 重载值,并清零系统 Tick 计数。 * slice_count 不允许为 0。 * tick_value 必须大于 1000。 */ char os_tick_config(u8 slice_count, u16 tick_value) //系统定时器时间设置,slice_count:时间片的片数;tick_value:时间片的大小 { if(slice_count==0) { return -1; } OS_TIME_ONCE=slice_count; if(tick_value<=1000) { return -1; } else { OS_TICK_COUNT_H=0;//系统时钟计数高16位 OS_TICK_COUNT_L=0;//系统时钟计数低16位 tick_value=65535-tick_value; tick_value++; OS_T0_TH0=tick_value>>8; OS_T0_TL0=tick_value&0xff; } return 0; } /*------------------------------------------------------------------------ | END OF FILE: tick_config.c | ------------------------------------------------------------------------*/

使用示例

void system_init() { if(os_tick_config(10, 5000) == 0) { // 定时器配置成功 } }

注意事项

tick_value 不能为 0,且必须保证大于系统最小计时精度,否则配置失败。 该函数通常在系统初始化阶段调用。

相关推荐