OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【uCOS_II学习笔记】uCOS_II中如何实现公共函数的调用

共5条 1/1 1 跳转至

【uCOS_II学习笔记】uCOS_II中如何实现公共函数的调用

高工
2013-10-06 20:56:58    评分

    当若干个任务均需要使用某些基本处理功能时,为简化设计,通常将这些基本处理功能单独编写为一个公共函数,供不同任务调用。那么问题就出现了如果个任务正在调用某个公共函数时被另一个高优先级的任务抢占,当这个高优先级的任务也调用这个公共函数时,则极有可能破环原任务的数据。为防止此情况的发生,通常采用两种措施:互斥调用和可重入设计。

1) 互斥调用:如果公共函数比较简单,运行时间比较短,可以先关中断在调用公共函数,调用结束后再开中断,从而避免其他任务打扰。如果公共函数比较复杂,运行时间比较长,就不能采取上述方法,此时最好为公共函数配置一个互斥信号量,任何任务在调用公共函数之前都必须首先取得对应的互斥信号量,否则就会被挂起。

2) 可重入设计:可重入函数允许多个任务嵌套调用,各个任务的数据相互独立,互不干扰。将公共函数设计为可重入函数的关键是不使用公共资源,可重入函数的所有变量均为局部变量。由于局部变量只有在调用的时候才被分配存储空间,不同的任务在不同的时刻调用该函数,他们的同一个局部变量分配的存储空间并不相同,故互不干扰。




关键词: uCOS_II     公共函数    

高工
2013-10-07 17:14:32    评分
2楼
汇总一下就好了。支持

高工
2013-10-07 18:22:27    评分
3楼

多谢赐教。。。


高工
2013-10-07 18:23:51    评分
4楼
顶楼主,这些东西很有用。总结出来直观一点

高工
2013-10-07 18:41:10    评分
5楼

以后要勤总结了,否则看过了会过了时间久了又是空白了


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]