Chapter 5
Note that the OSTaskSuspend() function unconditionally blocks a task and this
task will not actually wait for an event to occur but in fact, waits until another
task calls OSTaskResume() to make the task ready to run.
F5-6(5)
Assuming that CPU interrupts are enabled, an interrupting device will suspend
execution of a task and execute an Interrupt Service Routine (ISR). ISRs are
typically events that tasks wait for. Generally speaking, an ISR should simply
notify a task that an event occurred and let the task process the event. ISRs
should be as short as possible and most of the work of handling the
interrupting devices should be done at the task level where it can be managed
by μC/OS-III. ISRs are only allowed to make “Post” calls (i.e., OSFlagPost() ,
OSQPost() , OSSemPost() , OSTaskQPost() and OSTaskSemPost() ). The only
post call not allowed to be made from an ISR is OSMutexPost() since mutexes,
as will be addressed later, are assumed to be services that are only accessible at
the task level.
As the state diagram indicates, an interrupt can interrupt another interrupt. This
is called interrupt nesting and most processors allow this. However,
interrupt nesting easily leads to stack overflow if not managed properly.
Internally, μC/OS-III keeps track of task states using the state machine shown in Figure 5-7.
The task state is actually maintained in a variable that is part of a data structure associated
with each task, the task’s TCB. The task state diagram was referenced throughout the design
of μC/OS-III when implementing most of μC/OS-III’s services. The number in parentheses is
the state number of the task and thus, a task can be in any one of eight (8) states (see OS.H,
OS_TASK_STATE_??? ).
Note that the diagram does not keep track of a dormant task, as a dormant task is not
known to μC/OS-III. Also, interrupts and interrupt nesting is tracked differently as will be
explained further in the text.
This state diagram should be quite useful to understand how to use several functions and
their impact on the state of tasks. In fact, I’d highly recommend that the reader bookmark
the page of the diagram.
94
相关PDF资料
AD-UCUSBD-SPRD PRD LIC UCUSB DEV CORE CCES SGL
AD637-EVALZ BOARD EVALUATION FOR AD637
AD736-EVALZ BOARD EVALUATION FOR AD736
AD737-EVALZ BOARD EVALUATION FOR AD737
AD8007AKS-EBZ BOARD EVAL FOR AD8007AKS
AD8018ARU-EVAL BOARD EVAL FOR AD8018
AD8034ART-EBZ BOARD EVAL FOR AD8034ART
AD8040AR-EBZ BOARD EVAL FOR AD8040AR
相关代理商/技术参数
ADUCOSC100 制造商:Analog Devices 功能描述:ADC - Rail/Tube
ADUCOSC100-REEL 功能描述:DAC MICROCONVERTER DUAL TSSOP 制造商:analog devices inc. 系列:* 零件状态:上次购买时间 标准包装:1
ADUCOSC100-REEL7 功能描述:DAC MICROCONVERTER DUAL TSSOP 制造商:analog devices inc. 系列:* 零件状态:上次购买时间 标准包装:1
ADUCOSCZ100 制造商:Analog Devices 功能描述:
ADUCOSCZ100-REEL7 制造商:Analog Devices 功能描述:ANAADUCOSCZ100-REEL7 12 BIT ADC WITH EMB
ADuC-P7026 功能描述:开发板和工具包 - ARM PROTOTYPE BRD FOR ADUC7026 ARM7 RoHS:否 制造商:Arduino 产品:Development Boards 工具用于评估:ATSAM3X8EA-AU 核心:ARM Cortex M3 接口类型:DAC, ICSP, JTAG, UART, USB 工作电源电压:3.3 V
ADUCRF101 制造商:Analog Devices 功能描述:PRECISION ANALOG MICRCONTROLLER - Tape and Reel
ADUCRF101BCPZ128 制造商:Analog Devices 功能描述:PRECISION ANALOG MICROCONTROLLER WITH RF TRANSCEIVER, ARM CO - Trays