ucosiii
单片机之ucosiii
车小猿
这个作者很懒,什么都没留下…
展开
-
ucosiii之事件标志组
事件标志组有时候一个任务需要多个事件同步时,就需要用到事件标志组了。相关函数一般情况下只用到OSFlagPost(),OSFlagPend(),OSFlagCreate()三个函数OSFlagPost()函数的返回值是当前的事件标志组的事件标志位的值//例子如下//创建事件标志组OS_FLAG_GRP EventFlags; //定义一个事件标志组//创建一个事件标志...原创 2019-04-11 16:56:33 · 1763 阅读 · 0 评论 -
ucosiii之消息列队
在里面不断存入消息就可以了。然而在实测时发现每当连续存入两条消息时,后面的会覆盖掉前面的内容,有点十分不理解,DEBUG发现,这个队列中两条消息的指针都指向同一个内存了,所以会出现这个问题。其实,在创建消息队列的时候并没有为所存储的消息分配内存空间,这个需要用户自己去手动分配,也是因为每个消息占用的内存空间并不固定,无法事先分配好。...原创 2019-04-10 16:58:30 · 3379 阅读 · 0 评论 -
ucosiii之互斥信号量
在ucosiii中优秀级反转是非常常见的事,如:一个低优先级的任务一直独占着信号量而不释放,高优先级的任务只能进入挂起状态,等待低优秀级任务把信号量释放,而在发生任务切换时,高优先级任务就不能执行,而执行较低的优先级任务,从而造成优先级反转。如图:为了防止优先级反转,ucosiii支持一种特殊的二进制信号量:互斥信号量(解决优先级反转问题)如下图所示://互斥信号量常用函数如下图所示 :...原创 2019-04-03 16:48:53 · 895 阅读 · 0 评论 -
ucosiii之信号量
信号量用于资源共享、任务同步、任务和ISR(中断服务函数)间的同步,在现实实验中比较多用于任务同步和任务和ISR(中断服务函数)间的同步。//信号量常用函数//信号量用于资源共享例子如下://申请一个信号量和共享资源块u8 share_resource[30]; //共享资源区OS_SEM MY_SEM_SHARE; //定义一个信号量,用于访问共享资源//创建信号量 //创建...原创 2019-04-03 15:13:36 · 380 阅读 · 0 评论 -
ucosiii常用API函数
//申请临界代码函数变量函数如下:CPU_SR_ALLOC() //是为CPU_CRITICAL_ENTER()和CPU_CRITICAL_EXIT()为两个临界代码函数段申请一个变量 //变量为:#define CPU_SR_ALLOC() CPU_SR cpu_sr = (CPU_SR)0//ucosiii初始化函数如下:OSInit(&e...原创 2019-04-03 14:33:50 · 1071 阅读 · 0 评论 -
ucosiii确定任务堆栈的大小
ucosiii提供了一条API函数:void OSTaskStkChk(OS_TCB *p_tcb,CPU_STK_SIZE *p_free,CPU_STK_SIZE *p_used,OS_ERR *p_err)在单片机中使用uC/OS III 时,RAM的空间是需要考虑的,在创建任务的时候需要指定任务的堆栈大小,给大了呢浪费资源,给小了呢又会导致堆栈溢出。uC/OS III提供了堆栈使用情况的...原创 2019-03-25 15:14:53 · 2546 阅读 · 0 评论