os_tick_config
所属模块:系统配置 | 类型:定时器配置函数
函数简介
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,且必须保证大于系统最小计时精度,否则配置失败。
该函数通常在系统初始化阶段调用。