搜索
bottom↓
回复: 11

uC/OS 利用重构的printf函数 但是多任务启动后 跑飞问题 求...

[复制链接]

出0入0汤圆

发表于 2013-9-2 20:40:27 | 显示全部楼层 |阅读模式
代码如下:
  1. int main(void)
  2. {
  3.         OSInit();
  4.         Stm32f10xBSP();
  5.         [color=Red]UsartOut("/--------uC/OS-II 消息队列演示例程--------/\n");    //就是这句代码的开启与关闭会影响 OSStart()之后是否进入TaskStart()[/color]
  6.         //UsartOut("变参函数演示 %d\n",d);                                               //忽略此句
  7.         //UsartOut("变参函数演示 %s","this is the string demo\n");                //忽略此句
  8.         //UsartOut("变参函数演示 %s  这是第%d次\n","OK",d);                     //忽略此句
  9.         OSTaskCreate(
  10.                         TaskStart,
  11.                         (void *)0,
  12.                         &TaskStartSTK[TASK_START_STK_SIZE-1],
  13.                         TASK_START_PRIO
  14.                         );
  15.         OSStart();
  16.        
  17.         return 0x0;
  18. }

  19. static void TaskStart(void *pdata)
  20. {
  21.         pdata = pdata;

  22.         COMQ = OSQCreate(StrTbl,5);

  23.         OSTaskCreate(
  24.                         Task1,
  25.                         (void *)0,
  26.                         &Task1STK[TASK_1_STK_SIZE-1],
  27.                         TASK_1_PRIO
  28.                         );
  29.         OSTaskCreate(
  30.                         Task2,
  31.                         (void *)0,
  32.                         &Task2STK[TASK_2_STK_SIZE-1],
  33.                         TASK_2_PRIO
  34.                         );
  35.         OSTaskCreate(
  36.                         TaskUsartPrintf,
  37.                         (void *)0,
  38.                         &TaskUsartPrintfSTK[TASK_USART_PRINTF_STK_SIZE-1],
  39.                         TASK_USART_PRINTF_PRIO
  40.                         );

  41.         while(1)
  42.         {
  43.                 GPIOBSetGpx(GPIO_PIN_0);
  44.                 OSTimeDlyHMSM(0,0,0,50);
  45.                 GPIOBResetGpx(GPIO_PIN_0);
  46.                 OSTimeDlyHMSM(0,0,0,50);
  47.         }
  48. }
复制代码
现象描述:
如果关闭那句话 则OSStart启动之后,会进入TaskStart任务继续执行;如果打开那句话,则OSStart之后,不会进入TaskStart任务中。
难道是因为资源被占用????不应该啊!
求大神指导!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-9-2 20:48:37 | 显示全部楼层
注意规范的uCOS-II的初始化
OSInit();
初始化启动任务
OSStart();

在启动任务里面初始化外设,以及滴答时钟,详细的楼主课参考官网的例子

出0入0汤圆

 楼主| 发表于 2013-9-2 20:51:45 | 显示全部楼层
Eric2013 发表于 2013-9-2 20:48
注意规范的uCOS-II的初始化
OSInit();
初始化启动任务

哦 呵呵 多谢多谢!这个真没怎么看过  就想着先会用再说! 刚学 新手 见谅!   像我这样的代码   也不至于该影响程序的正常执行吧? 是因为不规范 才导致我说的那个问题嘛??

出0入0汤圆

发表于 2013-9-2 20:53:15 | 显示全部楼层
knight_lxf 发表于 2013-9-2 20:51
哦 呵呵 多谢多谢!这个真没怎么看过  就想着先会用再说! 刚学 新手 见谅!   像我这样的代码   也不至 ...

是因为不规范造成,有机会了读读源码就可以知道为什么要这么写。

出0入0汤圆

 楼主| 发表于 2013-9-2 21:18:25 | 显示全部楼层
Eric2013 发表于 2013-9-2 20:53
是因为不规范造成,有机会了读读源码就可以知道为什么要这么写。

   果然   谢了!

出0入0汤圆

发表于 2013-9-2 21:21:27 | 显示全部楼层
用个互斥量去锁住啊,使用完才会释放,释放了才会到其他线程使用,否则就等在那里

出0入0汤圆

发表于 2013-9-3 09:49:20 | 显示全部楼层
OSStart()准备好前不能发生Tick中断就行了。

出0入0汤圆

 楼主| 发表于 2013-9-3 20:36:24 | 显示全部楼层
eye 发表于 2013-9-3 09:49
OSStart()准备好前不能发生Tick中断就行了。

哦  原来如此 。因为USART打印字符的时间相对较长,所以发生了SysTick中断,进ISR调用uC/OS提供的服务,但此时uC/OS内核尚未启动。因此跑飞!  谢谢!

出0入0汤圆

发表于 2013-9-3 21:29:28 | 显示全部楼层
knight_lxf 发表于 2013-9-3 20:36
哦  原来如此 。因为USART打印字符的时间相对较长,所以发生了SysTick中断,进ISR调用uC/OS提供的服务, ...

启动任务并不是必须的。
虽然uCOS明确要求Tick启动要在Start之后。。。

出0入0汤圆

 楼主| 发表于 2013-9-4 19:31:27 | 显示全部楼层
eye 发表于 2013-9-3 21:29
启动任务并不是必须的。
虽然uCOS明确要求Tick启动要在Start之后。。。

兄台,请教另一个比较丢人的问题。 看了段uC/OS了 ,现在的感觉:有时感觉貌似会了(信号量、互斥、邮箱、队列这些东西的接口函数会操作了),有时再细想貌似又什么都不懂! 不知能否理解我说的,如果理解,如果你也有过相同的经历。望指点一二!!真心求教!!先行谢过!

出0入0汤圆

发表于 2013-9-4 20:01:39 | 显示全部楼层
Debug单步跟进去,查看关键的数据结构变量。

出0入0汤圆

 楼主| 发表于 2013-9-4 20:28:30 | 显示全部楼层
eye 发表于 2013-9-4 20:01
Debug单步跟进去,查看关键的数据结构变量。

谢谢  试试!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-3 05:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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