uCOS里的信号量错误笔记
来源:互联网 发布:粒子群算法代码 编辑:程序博客网 时间:2024/05/16 09:16
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">u8 * Get_Rm04_Check_Cmd_Flag(void)有问题</span>
具体为:请求信号量失败
OSSemPend(Get_Rm04_Check_Cmd_Flag_Sem,0,&m_err);//请求信号量,查看Rm04_Check_Cmd_Flag变量是否被占用
1,函数的返回值为OS_ERR_EVENT_TYPE,查看OSSemPend()返回值英文说明-->>If you didn't pass a pointer to a semaphore.-->>没有传递指针到信号量
2,查看 Get_Rm04_Check_Cmd_Flag_Sem=OSSemCreate(1);的返回值
Get_Rm04_Check_Cmd_Flag_Sem=OSSemCreate(1);//信号量,变量Rm04_Check_Cmd_Flag的访问控制if(Get_Rm04_Check_Cmd_Flag_Sem== (void *)0)fprintf(DEBUG_FILE,"\r\n\r\n\r\n\r\n\r\nGet_Rm04_Check_Cmd_Flag--创建失败r\n\r\n\r\n\r\n");发现创建失败。
3,细看后发现是uCOS配置文件os_cfg.h里对于事件个数限制为6,而我用了7个。将OS_MAX_EVENTS由6改为8.
4,还是出错,查看
OSSemPend(Get_Rm04_Check_Cmd_Flag_Sem,0,&m_err);<span style="white-space:pre">//请求信号量,查看Rm04_Check_Cmd_Flag变量是否被占用</span>的返回值,是OS_ERR_PEND_ISR 返回值英文说明-->>If you called this function from an ISR and the result would lead to a suspension.-->>中断服务程序中调用该函数,会导致程序挂起。
原因:中断服务程序不能无限等待改信号量的获取!
解决:写了个中断专用的信号量请求函数。(调用OSSemAccept())
u8 * Get_Rm04_Check_Cmd_Flag_ISR(void)
0 0
- uCOS里的信号量错误笔记
- ucos ii信号量的理解
- ucos-ii 信号量的使用
- ucos信号量的理解2
- ucos 信号量的理解3
- ucos---信号量
- ucos 信号量
- ucos任务与信号量的例子
- ucos中关于信号量的使用总结
- uCOS II中信号量的使用
- ucos ii学习笔记3 消息队列、信号量集
- ucos容易错误的地方
- ucos互斥信号量
- uCOS-II信号量学习
- uCOS-II信号量
- uCOS-II信号量学习
- UCOS之信号量
- ucos 计数信号量
- hdu1556 Color the ball (区间修改)
- Lucene实战
- 基于角色的权限设计(二)
- 小题
- memset(将一段内存空间填入某值)
- uCOS里的信号量错误笔记
- 《雨霖铃·寒蝉凄切》 柳永
- WPF应用Binding之数据转换
- Java Float与float的区别及instanceof的作用
- android ndk接口封装架构
- hdu 1228 A + B map 试用
- Visual Studio 2010 正式版激活的两种方法小结
- 每天学一点java字节码
- Android实现可拖拽的ListView