• 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
返回

电子发烧友 电子发烧友

  • 全文搜索
    • 全文搜索
    • 标题搜索
  • 全部时间
    • 全部时间
    • 1小时内
    • 1天内
    • 1周内
    • 1个月内
  • 默认排序
    • 默认排序
    • 按时间排序
大家还在搜
  • protothread - 电子发烧友

      ProtoThread是一个极简的C语言协程库,由5个简单的.h文件构成。ProtoThread主要是利用switch case内嵌循环的特殊语法来实现的。

    2133次浏览

  • 基于Protothread的实时多任务系统设计

    产品的竞争力。本文介绍采用Protothread在非常小的系统开销下实现实时多任务系统的方法。 关键词 Protothread 实时 多任务 线程模型 嵌入式程序框架一般类似于程序1所示结构:系统中有3个任务TaskA、TaskB、TaskC,均放置于主循环内,在

    2017-11-04 10:57

  • 如何实现Protothread这种工作方式呢

    如何实现Protothread这种工作方式呢?

    2022-02-25 07:56

  • 采用Protothread实现实时多任务系统

    采用Protothread实现实时多任务系统 在许多系统资源非常紧张的单片机应用中,使用实时操作系统进行任务调度来实现实时多任务系统时,由操作系统带来

    2009-03-29 15:10

  • (一)Protothread入门

    单片机裸机开发中常用到一个大循环, 即while(1), 程序中常常有需要延时的情况, 延时函数通常都是让CPU原地等待, 这样CPU无法进行其他操作, 会阻塞其他的工作, 利用率不高.如果在需要延时的时候, 当前程序让出CPU, 让别的程序运行, 那么CPU利用率会提高, 而且其他程序的响应也会快一些.图中上边是传统的串行的执行方式, 程序B必须等待程序A执行完, 才轮到它, 如果在程序A delay_ms的时候让CPU去执行程序B, 等延时完了再回到程序A, 这样在宏观上看两个程序就像在同时运行一

    2022-01-13 14:34

  • Contiki调用protothread程序设计

    Contiki是一个开源的、高度可移植的多任务操作系统,适用于联网嵌入式系统和无线传感器网络,Contiki适用于存储器资源十分受限的嵌入式单片机系统,典型的配置下Contiki只占用约2Kbytes的RAM以及40Kbytes的Flash存储器。Contiki中还包括一个可选的GUI子系统,可以提供对本地串口终端、基于VNC的网络化虚拟显示或者Telnet的图形化支持。

    2018-02-23 09:29

  • 时间触发+protothread思想+支持优先级的非抢占类OS调度器

    转 类OS,全C,适用所有单片机平台+调度器计时精度还是基于调度节拍时间。废话少说,先上stm8s103 IAR库工程代码压缩包。工程是在stm8s103f3单片机上调度通过,已经用消息实现了 UART1_TX模块的共享,即UART1_RX接收到的数据+0x11后再通过UART_TX模块发送回去,同时ADC1 通道3的转换结果也通过UART1_TX模块发送出去.见下图1.ADC1转换结果每1秒上传一次到PC。测试式给ADC1通道3供的是5V电,所以结果是0x03ff.即1023. 2.共享时PC接收到的数据: PC端每1.5秒向下发送一次数据 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0xaa,0xaa为简单测试时的包尾识别码,单片机接收到数据后将其加上0x11,之后发送回给PC,下图中可看到0x03ff和0x22 0x33 0x44 0x55 0x66 0x77 0x88 0xbb两种数据。 3.支持非抢占式优先级调度,优先级顺序就是创建任务时的顺序,由高到底。其实现思想是,每一个任务运行结束后,都重新回到第一个创建的任务处按顺序查找某个任务是否满足运行条件,所以先创建的任务会先被“发现”其满足运行条件并运行之,核心代码如下a.任务控制块数据结构struct SchTcb{#if SCH_CFG_Q_EN > 0uvoid *pData; //消息指针SCH_UINT8 Size;//消息大小#endifSCH_DLY_TYPETimeCounter;//定时计数器,时基为 "SCH_SYS_TICKS_MS"void (*pTask)();//任务指针struct SchTcb *pNextTCB; //下一个任务控制块指针};[color=rgb(51, 102, 153) !important]复制代码b.调度核心void SCHTaskSchedStart(void){SCHED_SART:pCurTCB = pFirstTCB;//指向第一个创建的任务,之后按创建时的顺序执行下去while (1){ SCHTimeTick(); //如果任务Tick满足条件,则将其置于可执行状态 if (SCH_TASK_RUN == pCurTCB->TimeCounter) //任务处于可执行状态 {pCurTCB->TimeCounter = SCH_TASK_PEND;//设置为挂起状态,保证任务只执行一次pCurTCB->pTask();//执行当前任务控制块指向的任务goto SCHED_SART;//每执行完一个任务,都重新查找一次可执行最高优先级任务 } pCurTCB = pCurTCB->pNextTCB;//指向下一个任务控制块,查找下个任务是否可执行}}[color=rgb(51, 102, 153) !important]复制代码“schedule.c”和"schedule.h"已经设置为只读属性,无特殊情况不建议修改,"sch_cfg.h"则为开放给用户的接口,可定义数据类型、调度器节拍和配置是否使用消息。本人水平有限,欢迎大家测试、指正不足。

    2014-04-17 15:45

  • 如何使用ProtoThreads实现Arduino多线程处理的程序免费下载

     我在做产品设计的课题的时候,小五义推荐我使用Protothread这个库来进行编写,研究了之后应用于自己的设计上效果还不错,应小五义的请写了这个Protothread的介绍,谈不上懂,就浅浅谈一谈我的理解,帮助大家应用,如果有错误的,欢迎指教。

    2019-04-25 18:28

  • 裸奔单片机的灵魂“类OS调度器”

    本帖最后由 binlan125 于 2013-9-14 08:00 编辑 特性:本调度器是集时间触发、 支持消息、 支持非抢占优先级调度, 借鉴了protothread思想,而使得其实

    2013-09-14 07:51

  • raw os 支持了idle 任务级别的事件驱动框架

    由于基于事件的protothread理解难度太大,而且事件触发也没有优先级。0.99c 的raw os增加了带有事件优先级的状态机。具体特性如下:1 带有事件优先级的状态机会会跑在idle任务上。2

    2013-02-27 14:31

  • 关于中断架构在raw os 中的设计

    方式是一样的。但是前提是中断处理的时间一定要足够短和足够快。第二种是中断处理的时间长,但是时间紧迫性不高,这样的话可以采用protothread的方式去解决这个问题。Protothread 是跑在raw

    2013-02-27 14:23