找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3330|回复: 9
打印 上一主题 下一主题
收起左侧

有没有熟悉RTX51TINY的老哥进来看看

[复制链接]
跳转到指定楼层
楼主
ID:601478 发表于 2020-2-24 10:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一开始在task0的时候创建task1/2/3/4,task0运行完后自毁,任务一为常态任务,任务2、3、4需按键进入与退出,用什么方法控制任务2/3/4的开/关(运行/停止)比较好,RTX51TINY的任务一旦创建后就独立运行,但能否让某个任务在触发条件1下运行,在触发条件2下停止

以上,求解
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 2020-2-24 19:48 | 只看该作者
使用 RTX51 的信号
你可以使用 os_wait功能暂停一个任务并等待从另一个任务发出的信号或旗标这可以用于
协调两个或更多的任务
等待一个信号会如下面所诉工作 如果一任务在等待一个信号并且信号标志是 0 在这个信号
被发送之前这个任务将一直处于挂起状态如果信号标志已经是 1 当任务查询信号时信号
标志会被清除并且继续执行任务。
以下例子说明了这种应用
#include <rtx51tny.h>
int counter0;
int counter1;
void job0 (void) _task_ 0 {
        os_create (1); /* mark task 1 as ready */
        while (1) { /* loop forever */
                if (++counter0 == 0) /* update the counter */
                os_send_signal (1); /* signal task 1 */
        }
}
void job1 (void) _task_ 1 {
        while (1) { /* loop forever */
                os_wait (K_SIG, 0, 0); /* wait for a signal */
                counter1++; /* update the counter */
        }
}
在上述例子中 job1一直处于等待状态直到它接收到从任何其他任务发出的信号当它接收到
一个信号时它将使 counter1加 1然后继续等待另一个信号job0 将连续地增加 counter0 直到
它溢出到 0 当溢出发生时 job0发送一个信号给 job1同时 RTX51标记 job1为执行状态在
R T X 5 1 到达下一个时钟报时周期前j o b 1 不会开始执行。

回复

使用道具 举报

板凳
ID:697630 发表于 2020-2-24 20:42 | 只看该作者
你试试这样,比如,task1:用os_single(1)触发;task1:os_wait1(SIG)运行;用 os_switch_task();切换到另一个任务,也就是当前任务不用运行;变向跳过当前任务;
回复

使用道具 举报

地板
ID:697630 发表于 2020-2-24 20:47 | 只看该作者
你试试这样,如task1;先用定1个flag;用switch case去调用os_single(1);和os_switch_task切换掉本任伤,用os_wait1(SIG)接收,很easy啊
回复

使用道具 举报

5#
ID:697630 发表于 2020-2-24 20:56 | 只看该作者
switch(flag) {case 0:os_set_ready(1);break;case 1:os_switch_task();}
回复

使用道具 举报

6#
ID:601478 发表于 2020-2-25 11:20 | 只看该作者
angmall 发表于 2020-2-24 19:48
使用 RTX51 的信号
你可以使用 os_wait功能暂停一个任务并等待从另一个任务发出的信号或旗标这可以用于
...

意思是指os_wait(K_SIG);在接收到来自其他任务的信号后响应一次后又自动变回等待信号的状态》
回复

使用道具 举报

7#
ID:155507 发表于 2020-2-25 13:32 来自手机 | 只看该作者
PDDDF 发表于 2020-2-25 11:20
意思是指os_wait(K_SIG);在接收到来自其他任务的信号后响应一次后又自动变回等待信号的状态》

是的,你可以自己写个看看
回复

使用道具 举报

8#
ID:601478 发表于 2020-2-25 14:25 | 只看该作者
angmall 发表于 2020-2-25 13:32
是的,你可以自己写个看看

谢谢,现在又有个新问题,不知道是我的keil4的版本不对还是咋的,编译不了RTX51TINY


BL51 BANKED LINKER/LOCATER V6.22.2.0 - SN: T1DZC-K24A8C
COPYRIGHT ARM Germany GmbH 1987 - 2017
".\Objects\STARTUP.obj",
".\Objects\ABC.obj"
TO ".\Objects\ABC" Rtx51Tiny
PRINT(".\Listings\ABC.m51") RAMSIZE(256)
*** FATAL ERROR L257: RTX51-TINY REQUIRES UPGRADE TO PK51
Target not created.
Build Time Elapsed:  00:00:00
回复

使用道具 举报

9#
ID:155507 发表于 2020-2-25 18:27 | 只看该作者
你没有用 Conf_tny.A51

看一下一个本坛链接,介绍得详细
http://www.51hei.com/bbs/dpj-56984-1.html
回复

使用道具 举报

10#
ID:697630 发表于 2020-2-26 17:58 | 只看该作者
REQUIRES UPGRADE TO PK51 意思是说让你和谐的时候要选PK51(第三个) 不是PRO(第一个),我都不好意思说了,唉
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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