CPU空闲
虽然通常是为空闲线程保留的,但在某些特殊的应用程序中,线程可能希望使CPU空闲。
概念
使CPU空闲会导致内核暂停所有操作,直到一个事件,通常是一个中断,唤醒CPU。在常规系统中,空闲线程负责此操作。然而,在一些受约束的系统中,另有一个线程承担这一责任。
实现
使CPU空闲
使CPU空闲很简单:调用k_cpu_idle()
API。CPU将停止执行指令,直到发生事件为止。最有可能的情况是,该函数将在一个循环中被调用。注意,在某些体系结构中,k_cpu_idle()
在返回时无条件地去屏蔽中断。
static k_sem my_sem;
void my_isr(void *unused)
{
k_sem_give(&my_sem);
}
void main(void)
{
k_sem_init(&my_sem, 0, 1);
/* wait for semaphore from ISR, then do related work */
for (;;) {
/* wait for ISR to trigger work to per