随笔分类 - uCOS-II学习笔记
摘要:信号量在资源共享、任务同步与通信等方面都有广泛的应用。信号量管理的核心函数有以下几个:OSSemCreate :创建信号量OSSemSet :设置信号量的值OSSemDel :删除一个信号量OSSemPend :等待信号量OSSemAccept :请求信号量OSSemPendAbort:放弃等待信号量OSSemPost :释放信号量OSSemQuery :查询信号量
阅读全文
摘要:事件控制块(ECB)事件控制块的数据结构 1 typedef struct os_event { 2 INT8U OSEventType; /* Type of event control block (see OS_EVENT_TYPE_xxxx) */ 3 void *OSEventPtr; /* Pointer to message or queue structure */ 4 INT16U OSEventCnt; ...
阅读全文
摘要:主要讲解时间管理的5个系统函数,时间管理最主要的功能是对任务进行延时。1、时间的获取和设置 1 INT32U OSTimeGet (void) 2 { 3 INT32U ticks; 4 #if OS_CRITICAL_METHOD == 3u /* Allocate storage for CPU status register */ 5 OS_CPU_SR cpu_sr = 0u; 6 #endif 7 8 9 10 OS_ENTER_CRITICAL();11 ticks = OS...
阅读全文
摘要:任务控制块是任务管理的核心数据结构,操作系统在启动的时候,首先要在内存中创建一定数量的任务控制块。以下是OS_TCB的数据结构: 1 typedef struct os_tcb { 2 OS_STK *OSTCBStkPtr; /* Pointer to current top of stack */ 3 4 #if OS_TASK_CREATE_EXT_EN > 0u 5 void *OSTCBExtPtr; /* Pointer to use...
阅读全文
摘要:今天将卢有亮老师基于VC的信号量管理的代码移植到STM32中,并通过串口打印在串口终端。 假设有共享资源R,允许2个任务分时访问R,那么信号量应该设置为2,系统中有三个任务(A、B、C)分别访问资源R,任务的优先级分别为7、6、5. 3个任务在操作系统的初始化和启动多任务之前被创建。任务A运行后创建信号量,并访问R,访问完成后任务将自己阻塞1000个时钟周期。任务B先阻塞自己300个时钟周期,任何操作步骤同任务A。任务C先阻塞400个时钟周期,然后操作步骤同任务A。 1 //========================================================...
阅读全文
摘要:系统初始化 1 void OSInit (void) 2 { 3 OSInitHookBegin(); /* Call port specific initialization code */ 4 5 OS_InitMisc(); /* Initialize miscellaneous variables */ 6 7 OS_InitRdyList(); ...
阅读全文
摘要:INT8U const OSUnMapTbl[256] = { 0u, 0u, 1u, 0u, 2u, 0u, 1u, 0u, 3u, 0u, 1u, 0u, 2u, 0u, 1u, 0u, /* 0x00 to 0x0F */ 4u, 0u, 1u, 0u, 2u, 0u, 1u, 0u, 3u, 0u, 1u, 0u, 2u, 0u, 1u, 0u, /* 0x10 to 0x1F */ 5u, 0u, 1u, 0u, 2u, 0u, 1u, 0u, 3u, 0u, 1u, 0u, 2u, 0u,...
阅读全文

浙公网安备 33010602011771号