esp8266.c
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798...
API函数1234567891011121314151617//创建一个内存区void OSMemCreate (OS_MEM *p_mem, //指向内存区结构体的指针 CPU_CHAR *p_name, //内存区名 void *p_addr, //指向内存区...
简介
可设置定时周期,当指定时间到达后要调用回调函数,用户在回调函数中处理信息,软件定时器的超时回调函数是完全由用户自定义的,并且会在软件定时器定时器超时的时候被自动地调用,且可以设置函数的传入参数。
支持裁剪,如需使能软件定时器,需将OS_CFG_TMR_EN配置项配置为1。
单次定时器和周期定时器1. 单次定时器单次定时器的一旦定时超时,只会执行一次其软件定时器超时回调函数,超时后可以...
简介事件标志是一个用于指示事件是否发生的比特位,因为一个事件是否发生只有两种情况,分别为事件发生和事件未发生,因此只需一个比特位就能够表示事件是否发生,µC/OS-III 用 1 表示事件发生,用 0 表示事件未发生。
事件标志组是多个事件的集合(最多可以表示32个事件标志)。
任意任务和中断都可以写这些位,但读只能由任务。
可以等待某一位成立,或者等待多位同时成立。
API函...
任务内嵌信号量
任务信号量只能被该任务获取,但是可以由其他任务或中断释放!
API函数12345678910111213141516//获取任务内嵌信号量OS_SEM_CTR OSTaskSemPend (OS_TICK timeout, //任务挂起等待时间 OS_OPT opt, //PEND_BLOCKI...
二值信号量二值信号量通常只有空和满两种情况,通常用于互斥访问和任务同步。
API函数使用过程:创建二值信号量–>释放二值信号量–>获取二值信号量
函数
描述
OSSemCreat()
创建一个信号量
OSSemDel()
删除一个信号量
OSSemPend()
获取信号量资源
OSSemPendAbort()
终止任务挂起等待信号量资源
OSSemPo...
队列简介
队列是任务到任务、中断到任务的数据交流的一种机制。
读写队列做好了保护,防止多任务同时访问冲突。
队列通常采用先进先出(FIFO)数据缓冲机制,也可配置为先进后出(LIFO)方式。
uCOS3队列数据是一个万能指针,可以指向任何数据。
任何任务和中断都可以向队列发送消息,但中断不支持读取。
写队列不支持阻塞,读队列支持阻塞。
主要流程:创建队列–>写队列–>读队列...
时间片调度API函数开启时间片调度,设置时间片的默认值
1234void OSSchedRoundRobinCfg( CPU_BOOLEAN en, //是否使能时间片调度,OS_TRUE/OS_FALSE OS_TICK dflt_time_quanta, //默认时间片长度 OSS_ERR *p...
PendSV 和 SysTick 中断优先级配置PendSV 中断优先级配置PendSV 主要用于任务切换,因此在 µC/OS-III 内核开始进行多任务处理前,也就是在 µC/OS-III 内核启动之前,就需要配置好 PendSV。在 µC/OS-III 中,将 PendSV 的中断优先级配置为 0xFF,也就是最低优先级。
123456789; 关中断C...
任务创建与删除任务创建12345678910111213void OSTaskCreate((OS_TCB *) p_tcb, (CPU_CHAR*) p_name, (OS_TASK_PTR) p_task, (void*) p_arg, ...