找回密码
 立即注册
楼主: CosyOS

全局不关总中断的 RTOS,CosyOS-III-V1.2.0, 送 擎天柱-AI8051U转89C52核心板

 火... [复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-05-02 07:00:13
已绑定手机

151

主题

589

回帖

1200

积分

金牌会员

积分
1200
发表于 2024-2-4 11:38:05 | 显示全部楼层
老师:图片中的( void * )&aa和&Task_STK_A[0]分别是任务参数传递和任务堆栈栈顶指针对吗?
Snipaste_2024-02-04_11-36-16.png

点评

这代码不像COsyOS的风格呀, 你应该看的是uCOS的代码吧 OSTaskCreate函数的原型为: INT8U OSTaskCreate (void (*task)(void *p_arg), void *p_arg, OS_STK *  详情 回复 发表于 2024-2-4 12:58
正确!  发表于 2024-2-4 12:55
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-05-02 07:00:13
已绑定手机

151

主题

589

回帖

1200

积分

金牌会员

积分
1200
发表于 2024-2-4 11:41:15 | 显示全部楼层
  // ==== LOGO ============   图片中的这个循环函数,写LOGO 是啥意思?
Snipaste_2024-02-04_11-38-47.png

点评

这个你需要问原作者了,我不清楚  发表于 2024-2-4 12:56
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:433
  • 最近打卡:2025-05-02 20:23:18

5

主题

1127

回帖

4267

积分

荣誉版主

积分
4267
发表于 2024-2-4 12:53:54 | 显示全部楼层
本帖最后由 CosyOS 于 2024-2-4 13:01 编辑
38009*** 发表于 2024-2-4 11:15
char putchar(char c)//putchar代表输出一个字符    发送完一个字符C后,最后返回的还是C,起到一个什么作 ...

putchar用于printf的串口重定向,putchar中返回的c就是传入的c。至于为何要返回,我也不清楚。但由于keil标准库(stdio.h)中就是这么声明的putchar,所以我们重定义puchar时也需这么定义。
不过你有兴趣的化,可以把stdio.h中putchar的声明改为 extern void putchar  (char);,再重定义putchar函数为 void putchar  (char) {...},并注释掉返回值,看printf能否正常打印输出???
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-2-4 12:58:02 | 显示全部楼层
38009*** 发表于 2024-2-4 11:38
老师:图片中的( void * )&aa和&Task_STK_A[0]分别是任务参数传递和任务堆栈栈顶指针对吗?
...

这代码不像COsyOS的风格呀, 你应该看的是uCOS的代码吧

OSTaskCreate函数的原型为:
INT8U  OSTaskCreate (void   (*task)(void *p_arg),
                     void    *p_arg,
                     OS_STK  *ptos,
                     INT16U   stk_size,
                     INT8U    prio)  large reentrant

5个参数:   @task 对应任务函数名
               @p_arg 对应要传给任务函数的数据指针
               @ptos 任务栈栈顶
              @stk_size 指定任务栈大小
              @prio  指定任务优先级

告诉你一个学习方法, 在函数名字上鼠标右键弹出菜单选择"Go To Definition xxxx"即可跳转的函数这义处, 此处可看到该函数的具体信息, 函数前有函数相关的说明如下, 如果英文不行, 可以用翻译看, 学习一样东西是师傅领进门, 修行靠个人
  1. /*
  2. *********************************************************************************************************
  3. *                                            CREATE A TASK
  4. *
  5. * Description: This function is used to have uC/OS-II manage the execution of a task.  Tasks can either
  6. *              be created prior to the start of multitasking or by a running task.  A task cannot be
  7. *              created by an ISR.
  8. *
  9. * Arguments  : task     is a pointer to the task's code
  10. *
  11. *              p_arg    is a pointer to an optional data area which can be used to pass parameters to
  12. *                       the task when the task first executes.  Where the task is concerned it thinks
  13. *                       it was invoked and passed the argument 'p_arg' as follows:
  14. *
  15. *                           void Task (void *p_arg)
  16. *                           {
  17. *                               for (;;) {
  18. *                                   Task code;
  19. *                               }
  20. *                           }
  21. *
  22. *              ptos     is a pointer to the task's top of stack.  If the configuration constant
  23. *                       OS_STK_GROWTH is set to 1, the stack is assumed to grow downward (i.e. from high
  24. *                       memory to low memory).  'pstk' will thus point to the highest (valid) memory
  25. *                       location of the stack.  If OS_STK_GROWTH is set to 0, 'pstk' will point to the
  26. *                       lowest memory location of the stack and the stack will grow with increasing
  27. *                       memory locations.
  28. *
  29. *              prio     is the task's priority.  A unique priority MUST be assigned to each task and the
  30. *                       lower the number, the higher the priority.
  31. *
  32. * Returns    : OS_ERR_NONE                     if the function was successful.
  33. *              OS_ERR_PRIO_EXIST               if the task priority already exist
  34. *                                              (each task MUST have a unique priority).
  35. *              OS_ERR_PRIO_INVALID             if the priority you specify is higher that the maximum
  36. *                                              allowed (i.e. >= OS_LOWEST_PRIO)
  37. *              OS_ERR_TASK_CREATE_ISR          if you tried to create a task from an ISR.
  38. *              OS_ERR_ILLEGAL_CREATE_RUN_TIME  if you tried to create a task after safety critical
  39. *                                              operation started.
  40. *********************************************************************************************************
  41. */
  42. #if OS_TASK_CREATE_EN > 0u
  43. INT8U  OSTaskCreate (void   (*task)(void *p_arg),
  44.                      void    *p_arg,
  45.                      OS_STK  *ptos,
  46.                      INT16U   stk_size,
  47.                      INT8U    prio) large reentrant
复制代码

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-05-02 07:00:13
已绑定手机

151

主题

589

回帖

1200

积分

金牌会员

积分
1200
发表于 2024-2-4 13:33:43 | 显示全部楼层
38009*** 发表于 2024-2-4 11:15
char putchar(char c)//putchar代表输出一个字符    发送完一个字符C后,最后返回的还是C,起到一个什么作 ...

感谢两位老师的指点,我再理解理解,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-05-02 07:00:13
已绑定手机

151

主题

589

回帖

1200

积分

金牌会员

积分
1200
发表于 2024-2-4 13:34:40 | 显示全部楼层
38009*** 发表于 2024-2-4 11:41
// ==== LOGO ============   图片中的这个循环函数,写LOGO 是啥意思?

我以为你就是原作者,感谢老师
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-05-02 07:00:13
已绑定手机

151

主题

589

回帖

1200

积分

金牌会员

积分
1200
发表于 2024-2-4 13:36:40 | 显示全部楼层
tzz1*** 发表于 2024-2-4 12:58
这代码不像COsyOS的风格呀, 你应该看的是uCOS的代码吧

OSTaskCreate函数的原型为:

太感谢您了,收益很大,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-05-02 07:00:13
已绑定手机

151

主题

589

回帖

1200

积分

金牌会员

积分
1200
发表于 2024-2-4 13:38:26 | 显示全部楼层
tzz1*** 发表于 2024-2-4 12:58
这代码不像COsyOS的风格呀, 你应该看的是uCOS的代码吧

OSTaskCreate函数的原型为:

我看的是uCOSII-STC8-V1.06,刚开始,很懵逼,感谢老师指点。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-05-02 07:00:13
已绑定手机

151

主题

589

回帖

1200

积分

金牌会员

积分
1200
发表于 2024-2-4 13:41:05 | 显示全部楼层
38009*** 发表于 2024-2-4 11:41
// ==== LOGO ============   图片中的这个循环函数,写LOGO 是啥意思?

这个循环对P2这样操作,有啥作用?不是太清楚

点评

对于这种旁支末节不要过度解读, 你从代码表面来理解就可以了, 代码的本意是P2=0;延时,P2=0XFF,延时, P2=0;延时, 大概意思就是让P2上的灯闪一下. 至于为什么有// ==== LOGO ============这句话, 就是过份解读了, 说  详情 回复 发表于 2024-2-4 14:08
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-05-02 07:00:13
已绑定手机

151

主题

589

回帖

1200

积分

金牌会员

积分
1200
发表于 2024-2-4 13:45:29 | 显示全部楼层
Cos*** 发表于 2024-2-4 12:53
putchar用于printf的串口重定向,putchar中返回的c就是传入的c。至于为何要返回,我也不清楚。但由于keil ...

感谢老师,我知道,它有啥用就好了,能应用就行,还没有深究的能力,
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 20:52 , Processed in 0.369500 second(s), 116 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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