STM8L151使用protothread

Protothreads实现STM32多线程处理 阅读详情

最近一直在搞stm8l,发现用if else的流程来写程序,后面添加新功能以及维护起来超级费劲,于是上网看看有没有类似操作系统之类的东西,无奈stm8L资源不多,无法移植嵌入式操作系统,无意中就找到了protothread,发现很有趣,下面这段别人翻译的,感谢作者。

◆ protothread是专为资源有限的系统设计的一种耗费资源特别少并且不使用堆栈的线程模型,相比于嵌入式操作系统,其有如下优点:

      1. 以纯C语言实现,无硬件依靠性; 因此不存在移植的困难。

      2. 极少的资源需求,每个Protothread仅需要2个额外的字节;

      3. 支持阻塞操纵且没有栈的切换。

 它的缺陷在于:

      1. 函数中不具备可重入型,不能使用局部变量;

      2. 按顺序判断各任务条件是否满足,因此无优先级抢占;

      3. 任务中的各条件也是按顺序判断的,因此要求任务中的条件必须是依次出现的。

      ◆ protothread的阻塞机制: 在每个条件判断前,先将当前地址保存到某个变量中,再判断条件是否成立,若条件成立,则往下

          运行;若条件不成立,则返回。

protothreads的官方下载网址:http://dunkels.com/adam/pt/download.html

告别状态机!在STM32单片机上用Protothread协程库实现异步LED闪烁(附完整代码) 本文介绍了如何在STM32单片机上使用Protothread协程库替代传统状态机实现异步LED闪烁控制。通过对比状态机和协程的优缺点,详细展示了Protothread在嵌入式开发中的工程化实践,包括代码示例、配置步骤和高级应用场景,帮助开发者提升代码可维护性和执行效率。 阅读详情

相关推荐

嵌入式平台stm32移植protobuf

在stm32项目上移植protobufprotobuf简介nanopb简介功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 protobuf简介 protobuf是由Google开发的一套对数据结构进行序列化的方法,可用做通信协议,

cubmonk的博客 3490

stm8s_atomthread

STM8S实时操作系统使用教程(内部版)介绍1.嵌入式操作系统基本知识 嵌入性、专用性与计算机系统是嵌入式系统的基本元素;跟通用计算机系统(如windows、linux等)相比,嵌入式系统具备专用性强、可剪裁性好、实时性好和功耗低的特点。 实时操作系统满足条件: 必须是多任务(任务调度或调度器,最核心功能) 任务的切换时间与系统当前任务数无关(调度器对任务切换时间) 中断延时的时间可预知并尽可能短

浪风一骑 9454

基于iar+protothread的stm8s工程模板,集合串口定时器按键和LED配置

基于iar V1.31环境在stm8s建立的工程模板,加入protothread,工程中已建立基本应用,串口的接收发送,LED的闪烁以及按键key的检测,同时配置了定时器并有注释说明,在这个基础上修改方便快捷的模板,更利于学习工作

protothread学习

<br />     ◆ protothread是专为资源有限的系统设计的一种耗费资源特别少并且不使用堆栈的线程模型,相比于嵌入式操作系统,其有如下优点:<br />      1. 以纯C语言实现,无硬件依靠性; 因此不存在移植的困难。<br />      2. 极少的资源需求,每个Protothread仅需要2个额外的字节;<br />      3. 支持阻塞操纵且没有栈的切换。<br />      ◆它的缺陷在于:<br />      1. 函数中不具备可重入型,不能使用局部变量;<br />

finewind的专栏 1万+

Protothreads 使用教程

Protothreads 是一个非常好的小系统,非常适合常规MCU产品的开发,占用资源极少。

pt-1.4-refman【protothread使用手册】.pdf

protothread的API使用手册,英文版,对于学习protothread的帮助极大。。。需要的可以下载。

纯C无操作系统轻量协程库Protothread使用记录

在单片机开发中很多时候都是无操作系统环境,这时候如果要实现异步操作,并且流程逻辑比较复杂时处理起来会稍稍麻烦。这时候可以试试 Protothread 这个协程库。

Naisu的各种笔记 6238

stm32f103vet6+protothreads

硬件平台stm32f103vet6,使用protothreads做成的一个模拟的线程而已,测试程序,一个定时输出,注意,测试程序,只用作演示而已。

ProtoThread原理及应用

概述 1.1. 概念 进程,一个具有独立功能的正在运行的程序实例。进程是相互独立的,并且可以同时运行。 线程,描述一段代码的执行路径。线程属于进程,每个进程至少有一个线程。线程有自己独立的栈,多个线程可以同时运行。 协程,coroutine,可以看作co-routine,也即协作程序。几个程序协作运行,可以理解为轻量级线程。 1.2. 应用 进程和线程都是重量级的,功能更强大,但是开销同样更大。尤其是针对一些嵌入式设备,受限于空间和性能,无法使用进程和线程。此时有一些并发需要,如果沿用通常的顺序流程来开发.

飞鹤的程序员人生 5269

利用Protothread实现实时多任务系统

 本文旨在解决资源紧张型应用的、多任务环境下的实时性问题。 通过借助Protothread的阻塞运行机制, 成功实现了低开销的实时多任务系统。

时间触发模式下的ProtothreadS设计应用

1 概 述   嵌入式行业的飞速发展使得嵌入式芯片的容量和功能都在不断地提升。以工业应用最为常见的8位微控制器为例,其ROM和RAM的容量都在不断扩大,甚至一些高端的8位处理器可以使用简单的操作系统(OS)来进行开发。同时,32位处理器的广泛普及也使得其价格逐渐逼近8位处理器。所以对很多应用来说,开发的简化和迅速成为最主要的目标。尤其是当使用一款新的处理器或者硬件电路时,快速的搭建其开发的框架变得尤其重要。在嵌入式系统中,通常会采用两种不同的任务管理和调度方式:事件触发和时间触发。事件触发方式以事件的发生为核心,往往会采用多级中断的方法来实现,其发生的时间具有随机性。所以事件触发方式具有较好

ProtoThread在STM32上实现跑马灯

注: 1、以下测试在STM32F407上进行通过,其他平台未测试。 2、版权所有,转载请注明作者和出处 一、protothread介绍 protothread相关介绍,源码获取等请到我的另一个博文阅读:https://blog.youkuaiyun.com/tsummer2010/article/details/104687083 二、protothread的参考手册 protothread的API手...

tsummer2010的专栏 1150

CAPL 中的变量类型详解与应用

CAPL 中的变量类型详解与应用

qq_42268594的博客 1448

从ProtoThread开始到contiki的学习

今天开始对Contiki的学习

okwhz的专栏 872

【嵌入式底层知识修炼】按键和LED共用IO口的分时复用扫描方法

文章目录01 - PCB原理图例程02 - 分时复用的注意项和设计2.1 - 注意项2.2 - 设计03 - 代码实现 只要我跑的速度够快,寂寞就追不上我 只要Key和Led切换速度够快,人眼就看不出来 ————小白   如果你存在按键Key和显示Led共用同一个IO时,需要分时复用的需求,则可以移植代码进行使用: 代码所占code少于0.5K 线程安全,中断安全 可移植性高,配置容易 注意:系统需要存在一个至少为1ms的时钟中断 01 - PCB原理图例程   举2个Key和Led共用IO口的

单眼皮根号三的博客 1万+

CentOS7下用FreeRADIUS+AD实现802.1X认证完整指南(附华为交换机配置)

本文提供了在CentOS 7系统上部署FreeRADIUS并与Windows Active Directory集成,以实现企业级802.1X网络认证的完整实战指南。内容涵盖从架构原理、服务器配置(包括Kerberos、Samba Winbind集成)、FreeRADIUS核心设置与AD联动,到华为交换机的详细配置步骤。重点解决了生产环境中常见的高可用、动态VLAN下发及深度排错问题,为企业构建集中、安全的网络准入控制体系提供了经过验证的解决方案。

weixin_29273849的博客 406

Protothread调度分析

Prothread存在于contiki、uip中,是由 用户创建线程必须要使用系统提供的框架, static int user_pthread( struct pt *pt) {     YSJ_INIT(pt);     YSJ_BEGIN(pt);      while(1)     {         YSJ_WAIT_UNTIL(pt, your_event ==

杨善锦技术专栏 2909

LTE/NR中的相应cause场景【原创】

目录1.背景2.LTE EMM cause2.0 写在最前2.1 特殊处理的cause第一梯队第二梯队2.2 非特殊处理的cause3.NR cause 实网分析终端被拒等问题,经常遇到各类cause,其会对应不同的终端限制行为。查找已有资料后理解没有很深,自行总结本文用于梳理现象,如有错误敬请指正,转载请注明出处。 本文用于记录协议Ts 24.301及Ts 24.501中的cause及其对应行为。 已总结的cause值: 24.301中的cause分

2301_79567300的博客 3488

[Contiki系列论文之3]Protothread:简化内存受限系统上的事件驱动编程

摘要  在微嵌入式系统和传感器网络节点中,事件驱动编程是一个受欢迎的模型。尽管事件驱动编程能降低内存开销,但由于它强制使用状态机编程风格,使许多程序难以编写、维护和调试。我们展示了一个新颖的被叫做protothread的编程抽象,使得在每个protothread只消耗两个字节的前提下,可以用类似线程的风格来编写事件驱动程序。我们检查了很多采用事件驱动状态机制实现的程序,若采用protothread机

3368

C#海康威视摄像头控制,将IntPtr转换成Bitmap图片

C#通过skd控制海康威视摄像头,获取bitmap格式图片

ReflexMechanism的博客 6586

AutoSAR从0开始实战 --- 目录

​​​​​​本专栏是全网最真实的AutoSAR实战专栏,博主将从一个0基础小白的身份来讲解AutoSAR工具的配置,以及相应代码的讲解。

wj博客 1728

protothread示例之多线程交替执行

#include <stdio.h> #include "pt.h" static int protothread1_flag, protothread2_flag; static int protothread1(struct pt *pt) { PT_BEGIN(pt); while(1) { //释放 CPU,等待 protothread2_flag 标识位不为...

LikeShadow 692

Nmap源码分析(端口扫描)

端口扫描是Nmap的核心功能,用于确定目标机的端口状态(开放、关闭、过滤等),也为Nmap的服务与版本扫描、OS扫描、脚本扫描提供基本的指引信息。所以,深入理解端口扫描的实现对分析其他的扫描方式很有帮助。 1简单回顾   首先简要回顾一下端口扫描的原理以及命令行选项。 1.1扫描原理   Nmap提供的10多种类型的端口扫描方法,如TCP SYN/ACK/FIN/Xmas/NULL/ Windows/Connect,FTP Bounce, Idle scan, UDP port u...

墨痕诉清风的博客 1597

基础——Protothread协程库

1. 几个概念   (1) 进程 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。 直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。   (2) 线程 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进

口袋里的跳跳糖 1328

大数据领域数据架构的工业互联网数据架构设计

工业互联网作为第四次工业革命的重要驱动力,正在深刻改变传统制造业的生产方式和商业模式。本文旨在探讨工业互联网环境下的大数据架构设计,重点解决工业数据采集、传输、存储、处理和分析等关键环节的技术挑战。工业互联网数据架构的核心组件大数据技术在工业场景下的应用数据治理和质量控制边缘计算与云计算的协同架构背景介绍:建立基本概念和问题域核心架构:详细解析工业互联网数据架构技术实现:通过代码和数学模型展示关键技术实践案例:展示真实场景应用工具资源:推荐实用开发工具和学习资源。

软件工程实践的博客 855

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: 视频基本知识
jnu_fangzebin
博客等级 码龄12年 55粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值