os_dispatch_id
所属模块:调度管理 | 类型:调度配置函数
函数简介
os_dispatch_id 用于设置 HRTOS 调度器所使用的中断号,
是调度触发机制中的关键配置接口。
在实时操作系统中,任务调度通常由定时中断或外部中断触发,
该函数允许开发者灵活指定调度中断来源,从而适配不同硬件平台或应用需求。
函数原型
char os_dispatch_id(unsigned char INTERRUPT_ID);
参数说明
| 参数 |
说明 |
| INTERRUPT_ID |
中断号(取值范围:0 ~ 31) |
返回值
0 表示设置成功,-1 表示参数非法(超出允许范围)。
核心机制解析
1. 参数合法性校验
函数首先检查中断号是否在允许范围内(0~31),
防止非法配置导致系统异常。
if(INTERRUPT_ID > 31)
{
return -1;
}
2. 调度入口绑定
当参数合法时,系统将中断号写入内部变量,
用于后续调度器绑定中断入口。
OS_DISPATCH_ID = INTERRUPT_ID;
调度器将在指定中断触发时调用 os_switch,
从而完成任务切换流程。
使用示例
void main()
{
// 设置调度使用定时器0中断
os_dispatch_id(1);
// 开启RTOS
os_rtos(1);
while(1)
{
}
}
典型使用场景
- 指定定时器中断作为调度触发源
- 适配不同单片机中断结构
- 多中断系统中选择调度入口
注意事项
中断号必须与实际硬件中断配置一致,否则调度器无法正常触发。
建议在系统初始化阶段完成设置,运行过程中不建议频繁修改。