OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2889|回复: 1

UCOSII优先级反转问题

[复制链接]

3

主题

7

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-11-12
在线时间
0 小时
发表于 2015-12-3 18:58:19 | 显示全部楼层 |阅读模式
5金钱

OS_EVENT *Sem_Event; //创建信号量 (最后面是串口打印数据值,与理想值不符,求指教!!)
int main(void)
{  
 uart_init(115200);    
 OSInit();   
 Sem_Event=OSSemCreate(1);  
 OSTaskCreate(start_task,(void*)0,(OS_STK*)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO); 
 OSStart();  
}
void high_task(void *pdata)//任务一,高优先级任务
{
 u8 err;
 while(1)
 {
  OSTimeDlyHMSM(0,0,0,500);   
  printf("high task Pend Sem\r\n");
  OSSemPend(Sem_Event,0,&err);  //信号量请求
  printf("high task Running!\r\n");
  OSSemPost(Sem_Event);    //信号量释放
  OSTimeDlyHMSM(0,0,0,500); //延时500ms   
 }
}
void middle_task(void *pdata)//任务二,中优先级任务
{
 while(1)
 {
  printf("middle task Running!\r\n");
  OSTimeDlyHMSM(0,0,1,0);   //延时1S
 }
}
void low_task(void *pdata)//任务三,低优先级任务
{
 static u32 times;
 u8 err;
 while(1)
 {                                       
  OSSemPend(Sem_Event,0,&err);
  printf("low task Running!\r\n");
  for(times=0;times<10000000;times++)
  {
   OS_Sched();          //任务调度
  }
  OSSemPost(Sem_Event); 
  OSTimeDlyHMSM(0,0,1,0);
 }
}
                                                                        
middle task Running!
middle task Running!
middle task Running!
middle task Running!
middle task Running!
high task Running!
middle task Running!
high task Pend Sem
high task Running!
low task Running!
middle task Running!
high task Pend Sem

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-11-12
在线时间
0 小时
 楼主| 发表于 2015-12-3 19:18:30 | 显示全部楼层
本人写的代码与视频一致,我觉得输出结果开始应该是           
middle task Running!
low task Running!
high task Pend Sem!
middle task Running!
middle task Running!
middle task Running!
high task Running!
然后才是上图的那个输出
 
 
 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 16:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表