0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【晶心科技ADP-Corvette-T1开发板试用体验】corvette T1的多任务调度学习

开发板试用精选 来源:开发板试用 作者:电子发烧友william hill官网 2022-11-11 10:55 次阅读

本文来源电子发烧友社区,作者:ankor, 帖子地址:https://bbs.elecfans.com/jishu_2292363_1_1.html

corvette T1多任务调度学习

本文尝试实现corvette T1开发板的多任务协作功能

多任务协作功能可以使用freeRTOSRT-thread一类实时操作系统实现,也可以使用中断、任务调度器来实现这些功能在arduino中也都支持,因为并不清楚T1开发板支不支持实时操作系统所以本次暂不采用实时操作系统来实现(英文太差,不太看的懂手册QAQ,而且说明文档好像也没提这事?)。

最后我选择了任务调度器来实现T1开发板下的多任务调度,主要用到TaskScheduler这个库,在管理库中搜索并安装即可。

image-20220710153612129.png

先演示下其中的示例,打开个库中的Scheduler_example00_Blink这个示例,操作步骤:文件→示例→TaskScheduler→Scheduler_example00_Blink,如下图。

image-20220710154230957.png

修改LED_BUILTON为13

image-20220710154558688.png

修改前
image-20220710154716104.png

修改后
然后上传即可看到开头视频中的演示效果了。

多任务调度学习

然后又跟下面这位大佬的教程学习了多任务调度的操作(其实主要是学明白他的操作,自己还是太菜了QAQ)

(42条消息) Arduino|实现多任务操作,从此告别果奔6柒的博客-CSDN博客arduino多任务并行

首先是声明自己的回调函数


void t1Callback();

void t2Callback(); void t3Callback();

然后创建任务也就是Task的创建


Task t1(2000, 10, &t1Callback);//创建任务对象,内部参数为延迟时间,任务生存时间(s),任务的回调函数地址

Task t2(3000, TASK_FOREVER, &t2Callback);//回调函数主要是实现任务功能的 Task t3(5000, TASK_FOREVER, &t3Callback);

然后是调度器的创建,主要负责收纳、执行和删除这些任务的


Scheduler runner;

然后根据对象runner区访问类的成员函数


runner.init();

runner.addTask(name);//添加name任务,name为上面的Task 如t1或t2或t3 runner.deleteTask(name); runner.execute();

更多的细节可以参考上面那篇文章,最后是T1开发板使用该文提供的代码跑出来的效果。


#include

// Callback methods prototypes void t1Callback(); void t2Callback(); void t3Callback();

//Tasks (delay_ms,times,func) Task t4(); Task t1(2000, 10, &t1Callback); Task t2(3000, TASK_FOREVER, &t2Callback); Task t3(5000, TASK_FOREVER, &t3Callback);

Scheduler runner;

void t1Callback() { Serial.print("t1: "); Serial.println(millis());


if (t1.isFirstIteration()) { runner.addTask(t3); t3.enable(); Serial.println("t1: enabled t3 and added to the chain"); } if (t1.isLastIteration()) { t3.disable(); runner.deleteTask(t3); t2.setInterval(500); Serial.println("t1: disable t3 and delete it from the chain. t2 interval set to 500"); }

}

void t2Callback() { Serial.print("t2: "); Serial.println(millis());

}

void t3Callback() { Serial.print("t3: "); Serial.println(millis());

}

void setup () { Serial.begin(115200); Serial.println("Scheduler TEST");

runner.init(); Serial.println("Initialized scheduler");

runner.addTask(t1); Serial.println("added t1");

runner.addTask(t2); Serial.println("added t2");

t1.enable(); Serial.println("Enabled t1"); t2.enable(); Serial.println("Enabled t2"); }

void loop () { runner.execute(); }

示例展示

image-20220710230703150.png

以上便是本文的所有内容了

谢谢阅读。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 晶心科技
    +关注

    关注

    0

    文章

    103

    浏览量

    18174
  • 开发板试用
    +关注

    关注

    3

    文章

    301

    浏览量

    2095
收藏 人收藏

    评论

    相关推荐

    全志T113-S3开发板网络通信

    前言:在使用开发板的过程中经常会使用到ssh、ftp等网络服务,这时需要使用开发板的网络功能。因此新拿到的开发板要先进行网络测试,检查网络功能是否正常,保障后续开发搭建的网络不出现问题
    的头像 发表于 12-26 08:32 106次阅读
    全志<b class='flag-5'>T</b>113-S3<b class='flag-5'>开发板</b>网络通信

    有奖丨米尔 全志T536开发板免费试用

    米尔与全志合作发布的新品基于全志T536应用处理器的MYD-LT536-GK开发板免费试用活动来啦~~米尔提供了3块价值750元的MYD-LT536-GK开发板发起
    的头像 发表于 12-26 08:05 36次阅读
    有奖丨米尔 全志<b class='flag-5'>T</b>536<b class='flag-5'>开发板</b>免费<b class='flag-5'>试用</b>

    如何用OpenCV进行手势识别--基于米尔全志T527开发板

    本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV手势识别方案测试。摘自优秀创作者-小火苗米尔基于全志T527
    的头像 发表于 12-13 08:04 662次阅读
    如何用OpenCV进行手势识别--基于米尔全志<b class='flag-5'>T</b>527<b class='flag-5'>开发板</b>

    FacenetPytorch人脸识别方案--基于米尔全志T527开发板

    本篇测评由电子工程世界的优秀测评者“小火苗”提供。本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的FacenetPytorch人脸识别方案测试。一
    的头像 发表于 11-28 15:12 313次阅读
    FacenetPytorch人脸识别方案--基于米尔全志<b class='flag-5'>T</b>527<b class='flag-5'>开发板</b>

    【RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux

    【RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux
    的头像 发表于 11-16 01:02 226次阅读
    【RA8D<b class='flag-5'>1</b><b class='flag-5'>试用</b>活动】RA8D<b class='flag-5'>1</b>B-CPKCOR<b class='flag-5'>开发板</b>移植linux

    【米尔-Xilinx XC7A100T FPGA开发板试用】+01.开箱(zmj)

    【米尔-Xilinx XC7A100T FPGA开发板试用】+01.开箱(zmj) 1.感谢 感谢米尔电子和电子发烧友提供的此次试用机会,可
    发表于 11-12 15:45

    搭载全志T527芯片的AvaotaA1开发板

    全志科技T527采用多核异构设计,集成了CPU、GPU、NPU、DSP、MCU等各种计算单元,为各种复杂场景的多任务处理、专用数据处理以及算法应用提供了高效且灵活的解决方案,为生成式AI、人工智能算法的场景化落地提供了坚实的硬件基础。
    的头像 发表于 09-14 09:16 885次阅读
    搭载全志<b class='flag-5'>T</b>527芯片的AvaotaA<b class='flag-5'>1</b><b class='flag-5'>开发板</b>

    Andes科技推出QiLai系统芯片和Voyager开发板

    高效能低功耗32/64位RISC-V处理器核心领导供货商暨RISC-V国际协会创始首席会员Andes 科技(TWSE:6533)今日宣布推出QiLai (奇莱)系统芯片(SoC)和Voyager开发板,以进一步加速大规模RI
    的头像 发表于 07-26 10:46 654次阅读

    【米尔-全志T113-i开发板试用】米尔-全志T113-i开发板与modbus设备的连接和操作

    。 四、结论 1、米尔-全志T113-i开发板提供了丰富的接口和稳定的操作系统环境,很适合工业控制软件程序开发; 2、依托libmodbus这个modbus协议库,对于linux应用下
    发表于 03-21 19:39

    SO14;SMD卷轴包,13“;Q1/T1产品定位包装信息

    电子发烧友网站提供《SO14;SMD卷轴包,13“;Q1/T1产品定位包装信息.pdf》资料免费下载
    发表于 02-22 09:30 0次下载
    SO14;SMD卷轴包,13“;Q<b class='flag-5'>1</b>/<b class='flag-5'>T1</b>产品定位包装信息

    HSOP8;用于SMD的卷筒干式包装,13“;Q1/T1产品方向包装信息

    电子发烧友网站提供《HSOP8;用于SMD的卷筒干式包装,13“;Q1/T1产品方向包装信息.pdf》资料免费下载
    发表于 02-22 09:29 0次下载
    HSOP8;用于SMD的卷筒干式包装,13“;Q<b class='flag-5'>1</b>/<b class='flag-5'>T1</b>产品方向包装信息

    X2SON5;SMD卷轴包,7“;Q1/T1产品定位包装信息

    电子发烧友网站提供《X2SON5;SMD卷轴包,7“;Q1/T1产品定位包装信息.pdf》资料免费下载
    发表于 02-22 09:28 0次下载
    X2SON5;SMD卷轴包,7“;Q<b class='flag-5'>1</b>/<b class='flag-5'>T1</b>产品定位包装信息

    双向可控硅导通问题,去掉触发信号,T1,T2极也断开了

    multisim14 中用双向可控硅MAC12HCDG仿真时,为什么触发电流撤掉后,T1,T2极也断开了灯泡不亮,威廉希尔官方网站 如下图,请帮忙看看威廉希尔官方网站 是否有问题?
    发表于 02-04 13:24

    飞凌嵌入式T113-i开发板的调屏方法

    对于飞凌嵌入式T113-i开发板的调屏问题,需要按照以下步骤进行操作
    的头像 发表于 01-29 16:25 993次阅读

    学习笔记分享|使用C库函数控制ELF 1开发板的LED

    (ELF1/ELF1S开发板及显示屏)在嵌入式Linux系统开发中,通过编程控制硬件资源是至关重要的技能之一,今天跟各位小伙伴分享一篇专注于介绍如何使用C库函数控制ELF
    的头像 发表于 01-19 11:12 568次阅读
    <b class='flag-5'>学习</b>笔记分享|使用C库函数控制ELF <b class='flag-5'>1</b><b class='flag-5'>开发板</b>的LED