📄 mycore.c
字号:
//******************************************************************
//* mytest fuction>
#include<reg52.h>
/***********************************CPU.H**************************************************************/
typedef unsigned char BOOLEAN;
typedef unsigned char INT8U;
typedef signed char INT8S;
typedef unsigned int INT16U;
typedef signed int INT16S;
typedef unsigned long INT32U;
typedef signed long INT32S;
typedef float FP32;
typedef double FP64;
typedef unsigned char OS_STK;
#define OS_CRITICAL_METHOD 1
#if OS_CRITICAL_METHOD == 1
#define OS_ENTER_CRITICAL() EA = 0
#define OS_EXIT_CRITICAL() EA = 1
#endif
#define OS_STK_GROWTH 1
#define OS_TASK_SW() OSCtxSw()
/***********************************CPU.H END**********************************************************/
/******************************************************************************************************/
/***********************************OS_CFG.H***********************************************************/
#define OS_MAX_EVENTS 0
#define OS_MAX_MEM_PART 0
#define OS_MAX_QS 0
#define OS_MAX_TASKS 6
#define OS_LOWEST_PRIO 7
#define OS_STK_SIZE 64 //用户任务堆栈大小
#define OS_TASK_IDLE_STK_SIZE 64 //系统空闲任务堆栈大小
#define OS_TASK_STAT_EN 1
#if OS_TASK_STAT_EN
#define OS_TASK_STAT_STK_SIZE 64 //系统统计任务堆栈大小
#endif
#define OS_TASK_BUF_EN 0
#if OS_TASK_BUF_EN
#define OS_TASK_BUF_NO 1 //定义缓冲区个数和缓冲区大小
#define OS_TASK_BUF_SIZE 64
#endif
#define OS_CPU_HOOKS_EN 0
#define OS_TICKS_PER_SEC 50 //时钟节拍50HZ
#define OSSCHED_LOCK_EN 0
#define OS_VERSION_CHK_EN 0
//*--------------------------------------------------------------------
#define OS_TICK_TIME 1 //* increased 20ms at every one
//*--------------------------------------------------------------------
//* OS_MEM configure
#define OS_MEM_EN 0
//*--------------------------------------------------------------------
//* OS_MBOX configure
#define OS_MBOX_EN 0 //*
#define OS_Mbox_Accept_EN 0 //*
#define OS_Mbox_Create_EN 0 //*
#define OS_Mbox_Pend_EN 0 //*
#define OS_Mbox_Post_EN 0 //*
#define OS_Mbox_Query_EN 0 //*
//*--------------------------------------------------------------------
//* os_Q configure
#define OS_Q_EN 0 //* Include code for QUEUES
#define OS_Q_Query_EN 0 //*
#define OS_Q_PostFront_EN 0 //*
#define OS_Q_Post_EN 0 //*
#define OS_Q_Pend_EN 0 //*
#define OS_Q_Flush_EN 0 //*
#define OS_Q_Create_EN 0 //*
#define OS_Q_Accept_EN 0 //*
//*--------------------------------------------------------------------
//* os_Sem configure
#define OS_Sem_EN 0 //* all of the follow
#define OS_Sem_Create_EN 0 //* OSSemCreate()
#define OS_Sem_Pend_EN 0 //* OSSemPend()
#define OS_Sem_Post_EN 0 //* OSSemPost()
#define OS_Sem_Accept_EN 0 //* OSSemAccept()
#define OS_Sem_Query_EN 0 //* OSSemQuery()
//*--------------------------------------------------------------------
//* os_time configure
#define OS_Time_DlyHMSM_EN 0
#define OS_Time_Dly_EN 1
#define OS_Time_DlyResume_EN 0
#define OS_Time_Get_EN 0
#define OS_Time_Set_EN 0
//*--------------------------------------------------------------------
//* os_task configure
#define OS_TASK_CHANGE_PRIO_EN 0 //* OSTaskChangePrio()
#define OS_TASK_CREATE_EN 1 //* OSTaskCreate()
#define OS_TASK_CREATE_EXT_EN 0 //* OSTaskCreateExt()
#define OS_TASK_DEL_EN 0 //* OSTaskDel()
#define OS_TASK_SUSPEND_EN 0 //* OSTaskSuspend and OSTaskResume
#define OS_Task_Query_EN 0 //* OSTaskQuery()
//*--------------------------------------------------------------------
//* interrupt function predefine
#define USE_Pre_ExternInt0 0
#define USE_Pre_ExternInt1 0
#define USE_Pre_TimeInt1 0
#define USE_Pre_SeryInt 0
/******************************************************************************************************/
/******************************OS_CONFIG.H END*********************************************************/
/******************************UCOS_II.H***************************************************************/
/*********************************************************************************************************
* MISCELLANEOUS
*********************************************************************************************************/
#define OS_PRIO_SELF 0xFF
#if OS_TASK_STAT_EN
#define OS_N_SYS_TASKS 2
#else
#define OS_N_SYS_TASKS 1
#endif
#define OS_STAT_PRIO (OS_LOWEST_PRIO - 1)
#define OS_IDLE_PRIO (OS_LOWEST_PRIO)
#define OS_EVENT_TBL_SIZE ((OS_LOWEST_PRIO) / 8 + 1)
#define OS_RDY_TBL_SIZE ((OS_LOWEST_PRIO) / 8 + 1)
#define OS_TASK_IDLE_ID 65535
#define OS_TASK_STAT_ID 65534
#define OS_STAT_RDY 0x00 //就绪
#define OS_STAT_SEM 0x01 //等待信号
#define OS_STAT_MBOX 0x02 //等待邮箱
#define OS_STAT_Q 0x04 //等待消息队列
#define OS_STAT_SUSPEND 0x08 //挂起
#define OS_EVENT_TYPE_MBOX 1
#define OS_EVENT_TYPE_Q 2
#define OS_EVENT_TYPE_SEM 3
#define OS_TASK_OPT_STK_CHK 0x0001
#define OS_TASK_OPT_STK_CLR 0x0002
#define OS_TASK_OPT_SAVE_FP 0x0004
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
/*********************************************************************************************************
* ERROR CODES
*********************************************************************************************************/
#define OS_NO_ERR 0
#define OS_ERR_EVENT_TYPE 1
#define OS_ERR_PEND_ISR 2
#define OS_TIMEOUT 10
#define OS_TASK_NOT_EXIST 11
#define OS_MBOX_FULL 20
#define OS_Q_FULL 30
#define OS_PRIO_EXIST 40
#define OS_PRIO_ERR 41
#define OS_PRIO_INVALID 42
#define OS_SEM_OVF 50
#define OS_TASK_DEL_ERR 60
#define OS_TASK_DEL_IDLE 61
#define OS_TASK_DEL_REQ 62
#define OS_TASK_DEL_ISR 63
#define OS_NO_MORE_TCB 70
#define OS_NO_MORE_OSTK 77
#define OS_TIME_NOT_DLY 80
#define OS_TIME_INVALID_MINUTES 81
#define OS_TIME_INVALID_SECONDS 82
#define OS_TIME_INVALID_MILLI 83
#define OS_TIME_ZERO_DLY 84
#define OS_TASK_SUSPEND_PRIO 90
#define OS_TASK_SUSPEND_IDLE 91
#define OS_TASK_RESUME_PRIO 100
#define OS_TASK_NOT_SUSPENDED 101
#define OS_MEM_INVALID_PART 110
#define OS_MEM_INVALID_BLKS 111
#define OS_MEM_INVALID_SIZE 112
#define OS_MEM_NO_FREE_BLKS 113
#define OS_MEM_FULL 114
#define OS_TASK_OPT_ERR 130
/*********************************************************************************************************
* EVENT CONTROL BLOCK
*********************************************************************************************************/
#if (OS_MAX_EVENTS >= 2)
typedef struct {
void *OSEventPtr; /* Pointer to message or queue structure */
INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur */
INT16U OSEventCnt; /* Count of used when event is a semaphore */
INT8U OSEventType; /* OS_EVENT_TYPE_MBOX, OS_EVENT_TYPE_Q or OS_EVENT_TYPE_SEM */
INT8U OSEventGrp; /* Group corresponding to tasks waiting for event to occur */
} OS_EVENT;
#endif
/*********************************************************************************************************
* MESSAGE MAILBOX DATA
*********************************************************************************************************/
#if OS_MBOX_EN
typedef struct {
void *OSMsg; /* Pointer to message in mailbox */
INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur */
INT8U OSEventGrp; /* Group corresponding to tasks waiting for event to occur */
} OS_MBOX_DATA;
#endif
/*********************************************************************************************************
* MEMORY PARTITION DATA STRUCTURES
*********************************************************************************************************/
#if OS_MEM_EN && (OS_MAX_MEM_PART >= 2)
typedef struct { /* MEMORY CONTROL BLOCK */
void *OSMemAddr; /* Pointer to beginning of memory partition */
void *OSMemFreeList; /* Pointer to list of free memory blocks */
INT32U OSMemBlkSize; /* Size (in bytes) of each block of memory */
INT32U OSMemNBlks; /* Total number of blocks in this partition */
INT32U OSMemNFree; /* Number of memory blocks remaining in this partition */
} OS_MEM;
typedef struct {
void *OSAddr; /* Pointer to the beginning address of the memory partition */
void *OSFreeList; /* Pointer to the beginning of the free list of memory blocks */
INT32U OSBlkSize; /* Size (in bytes) of each memory block */
INT32U OSNBlks; /* Total number of blocks in the partition */
INT32U OSNFree; /* Number of memory blocks free */
INT32U OSNUsed; /* Number of memory blocks used */
} OS_MEM_DATA;
#endif
/*********************************************************************************************************
* MESSAGE QUEUE DATA
*********************************************************************************************************/
#if OS_Q_EN
typedef struct {
void *OSMsg; /* Pointer to next message to be extracted from queue */
INT16U OSNMsgs; /* Number of messages in message queue */
INT16U OSQSize; /* Size of message queue */
INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur */
INT8U OSEventGrp; /* Group corresponding to tasks waiting for event to occur */
} OS_Q_DATA;
#endif
/*********************************************************************************************************
* SEMAPHORE DATA
*********************************************************************************************************/
#if OS_Sem_EN
typedef struct {
INT16U OSCnt; /* Semaphore count */
INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur */
INT8U OSEventGrp; /* Group corresponding to tasks waiting for event to occur */
} OS_SEM_DATA;
#endif
/*********************************************************************************************************
* TASK STACK DATA
*********************************************************************************************************/
#if OS_TASK_CREATE_EXT_EN
typedef struct {
INT32U OSFree; /* Number of free bytes on the stack */
INT32U OSUsed; /* Number of bytes used on the stack */
} OS_STK_DATA;
#endif
/*********************************************************************************************************
* USER STACK CONTROL BLOCK
*********************************************************************************************************/
typedef struct os_stkcb {
OS_STK *OSTKBtomPtr;
struct os_stkcb *OSTKCBNext;
}OS_STKCB;
/*********************************************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -