59 lines
1.2 KiB
C
59 lines
1.2 KiB
C
#ifndef __QPOS_H
|
|
#define __QPOS_H
|
|
#include "main.h"
|
|
#define Qpos_heap_size 4096 //单位4bytes
|
|
|
|
#define PortSVChandler SVC_Port //SVC异常入口
|
|
#define PortPendSVhandler PendSV_Port //PendSV异常入口
|
|
#define PortSysTickHandler SysTick_Port //Systick异常入口
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef enum TaskState
|
|
{
|
|
run=0,ready,pend,delay
|
|
}TaskState;
|
|
|
|
|
|
/**
|
|
* 任务控制块结构体
|
|
*/
|
|
typedef struct TCB_t{
|
|
uint32_t *sp; // 任务栈顶
|
|
uint8_t priority;//任务优先级
|
|
TaskState state;//任务状态
|
|
uint32_t xWakeTime;//Delay时唤醒时间
|
|
struct TCB_t *pxPrev;//下一任务地址
|
|
struct TCB_t *pxNext;//上一任务地址
|
|
}TCB_t;
|
|
/**
|
|
* 任务链表结构体
|
|
*/
|
|
typedef struct
|
|
{
|
|
uint32_t TaskNumber; //节点个数
|
|
TCB_t RootTask; //根节点
|
|
}TaskList;
|
|
|
|
|
|
|
|
void vQposInit();
|
|
void vQposStart();
|
|
TCB_t * vTaskCreate(void (*task_entry)(void* param),uint32_t stack_size,uint32_t priority,void* param);
|
|
void vTaskDelete(TCB_t* task);
|
|
void vTaskDelay(uint32_t time);
|
|
uint32_t uGetOsTick();
|
|
|
|
void asas();
|
|
void cesi();
|
|
// void PortPendSVhandler();
|
|
// void PortSVChandler();
|
|
void port_trigger_PendSV_Handler(void);
|
|
|
|
#endif
|