📄 kernel.h
字号:
#ifndef _KERNEL_H
#define _KERNEL_H
#include "itron.h"
#include "config.h"
//定义常量
#define DUMMY 0
#define CTXSIZ 20/sizeof(INT) //任务启动前堆栈内数据的大小//
#define INIFLG 0x00c0 //任务启动时标志寄存器值(U,I)//
#define SET 1
#define CLR 0
#define SYSTIM_CNT ((16*1000/32)*SYSTIM_INTERVAL)
typedef struct t_tcb
{
ID tskid; //任务ID//
UINT tskstat; //任务状态//
UINT tskwait; //任务等待模式//
PRI tskpri; //任务优先级//
INT wupcnt; //唤醒请求计数器//
UINT tmout; //超时计数器//
INT *sp; //任务堆栈指针//
void **arg; //邮箱操作中指向消息地址的指针//
struct t_tcb *next; //next指针//
struct t_tcb *prev; //prev指针//
}T_TCB;
typedef struct t_sem
{
INT cnt; //信号量计数器//
T_TCB *head; //等待信号量的任务队列的TCB头指针//
}T_SEM;
typedef struct t_mbx
{
INT msgcnt; //邮箱内的邮件数//
T_TCB *head; //等待邮箱的任务队列的TCB头指针//
void **msghead; //邮箱的邮件头指针//
void **msgtail; //邮箱的邮件尾指针//
}T_MBX;
typedef struct t_tim
{
UINT time; //当前的定时器计数值//
T_TCB *head; //等待任务队列的TCB头指针//
}T_TIM;
extern const UW stad_tbl[]; //任务的起始地址表//
extern const PRI pri_tbl[]; //任务的优先级表//
extern UINT *const sp_tbl[]; //任务堆栈指针表//
extern const INT semcnt_tbl[]; //信号量初始值表//
extern const INT msgsiz_tbl[]; //邮箱大小表//
extern void ** const msgq_tbl[]; //邮箱msg的头指针表//
void add_que( T_TCB ** head, T_TCB *addtcb ); //向一个队列中增加TCB节点//
void del_que( T_TCB ** head, T_TCB *deltcb ); //从一个对列中删除TCB节点//
void dispatch(void); //RTOS调度//
void sysini(void);
ER _ista_tsk( ID tskid, INT stacd); //开始一个新任务//
void systimini(void);
extern void syssta(void);
#endif //_KERNEL_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -