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

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

3天内不再提示

STM32单片机裸机:实现多任务设计实现

STM32嵌入式开发 来源:STM32嵌入式开发 2023-11-21 15:02 次阅读

问题

单片机开发过程中,随着任务的增多,完全等待一个任务完成后,再去执行下一个任务的弊端越发明显。

wKgZomVcViSAOO1TAAAT-Wquh3E708.jpg

在while(1)循环中实现LED 周期闪烁,提示系统正常运行。

代码实例:

wKgZomVcViSAPAWxAAANnsgslN4356.jpg

采用时间分割思想,去处理不同的任务,每次执行1ms,到500次时,执行相应功能。

代码

定义结构体:

Delay:时间片执行时长;

Period:任务执行周期。

wKgaomVcViSAbGFiAAAkC1NSq34161.jpg

添加(创建)任务:

wKgZomVcViSAd9bAAAA2AF3cbEA747.jpg

删除任务:

wKgaomVcViSAB-dHAAAfA0Nwd90832.jpg

更改任务:

wKgaomVcViSAFlZpAAAoGitM1MU455.jpg

执行调度器:

wKgZomVcViWAJW4vAABG1g6gL7k638.jpg

定时器查询时间片:

wKgaomVcViWAcIbvAAAVng7vT7I989.jpg

测试

封装好了必要的函数之后,接下来学习如何使用,很简单,首先创建几个任务,创建了2个任务,两个任务分别是task01,“时间片”是50ms(自己根据需要订),任务周期是500ms,task02,“时间片”是10ms(自己根据需要订),任务周期是1000ms:

wKgaomVcViWAYK6EAAAdOzb0Smk922.jpg

在systick(或者其他定时器)中调用,关于Systick的使用:STM32实例-SysTick实现2个LED流水灯效果。

wKgZomVcViWAEZtuAAAO9GsT-l0599.jpg

最后只需要在while中调用调度器就OK了(类似于LVGL的设计思路),根据我们的设计,两个任务,一个是500ms打印“task01 test”,另一个1000ms打印“task02 test”。

wKgZomVcViWAVdcaAAD1aUd0qds467.jpg







审核编辑:刘清

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

    关注

    0

    文章

    29

    浏览量

    9810
  • STM32单片机
    +关注

    关注

    59

    文章

    549

    浏览量

    58638
  • 裸机
    +关注

    关注

    0

    文章

    39

    浏览量

    6345

原文标题:STM32单片机裸机:实现多任务

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FreeRTOS多任务系统的相关资料推荐

    目录单片机各编程系统特点1、裸机系统(1)轮询系统(2)前后台系统2、多任务系统单片机各编程系统特点单片机编程中有
    发表于 01-13 07:51

    时间片轮询+状态实现裸机多任务相关资料分享

    时间片+状态实现裸机多任务注:上述伪多任务是按个人理解命名的,实际上在裸机中跑的还是单线程,
    发表于 01-17 06:14

    stm32F4系列单片机如何利用一个定时器和二行代码实现多任务的运行?

    stm32F4系列单片机如何利用一个定时器和二行代码实现多任务的运行?
    发表于 01-19 07:37

    介绍一种嵌入式裸机多任务切换方法

    一种嵌入式裸机多任务切换方法有时候为了实现一些简单的、对实时性要求不高的任务,采用操作系统不仅增加了程序的复杂性,对低性能单片机的资源占用也
    发表于 02-28 13:27

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

    采用Protothread实现实时多任务系统 在许多系统资源非常紧张的单片机应用中,使用实时操作系统进行任务调度来实现实时
    发表于 03-29 15:10 1439次阅读
    采用Protothread<b class='flag-5'>实现</b>实时<b class='flag-5'>多任务</b>系统

    51单片机多任务机制的实现策略研究

    从操作系统实现多任务机制的原理入手,分析了51单片机实现多任务机制的基本条件,论述了5l单片机
    发表于 09-19 17:26 159次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>多任务</b>机制的<b class='flag-5'>实现</b>策略研究

    单片机系统多任务实现方法

    考虑到成本等因素,大多数单片机系统的开发还是基于处理器直接编写,但开发者经常面临同时处理多个任务的要求,提出了一种单片机多任务程序设计的方法
    发表于 11-21 16:47 750次下载

    51单片机多任务操作系统的原理与实现

    51单片机多任务操作系统的原理与实现,在51单片机上模拟操作系统
    发表于 02-28 15:09 16次下载

    如何使用51单片机实现多任务机制的策略详细资料说明

    51单片机在微型智能控制系统中应用很广,随着人们对控制系统的要求不断提高,51单片机的功能局限越发明显。特别是51系列单片机不具有实时多任务支持功能,大大限制其在控制系统中的进一步发展
    发表于 07-17 17:38 6次下载
    如何使用51<b class='flag-5'>单片机</b><b class='flag-5'>实现</b><b class='flag-5'>多任务</b>机制的策略详细资料说明

    单片机多任务处理方案

    单片机要执行多任务,可以使用中断的方式,也可以使用操作系统,目前有一些适用于单片机的小型操作系统。
    的头像 发表于 09-13 15:45 9508次阅读

    使用单片机实现道路交通灯多任务控制系统的课件说明

     RTX-51是运行于8051单片机环境中的实时多任务操作系统(RTOS),其常用于处理复杂的多任务控制系统。8051单片机支持典型的RTX-51 Tiny和RTX-51 Full实时
    发表于 04-16 17:31 7次下载
    使用<b class='flag-5'>单片机</b><b class='flag-5'>实现</b>道路交通灯<b class='flag-5'>多任务</b>控制系统的课件说明

    实时多任务机制在低功耗单片机系统中的最小实现

    简要介绍低功耗单片机系统的设计原则。详细阐述了实时多任务程序结构的特点以及在低功耗单片机中的一种最小实现方法。结合低功耗热能测量系统实例介绍其具体
    发表于 06-24 10:26 27次下载

    单片机多任务事件驱动C源码

    单片机多任务事件驱动C源码
    发表于 11-29 10:06 26次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>多任务</b>事件驱动C源码

    时间片轮询+状态实现裸机多任务

    时间片+状态实现裸机多任务注:上述伪多任务是按个人理解命名的,实际上在裸机中跑的还是单线程,
    发表于 01-18 10:37 32次下载
    时间片轮询+状态<b class='flag-5'>机</b><b class='flag-5'>实现</b><b class='flag-5'>裸机</b><b class='flag-5'>多任务</b>

    单片机裸机实现队列功能的方案

    单片机裸机实现队列功能的方案
    的头像 发表于 10-17 14:34 546次阅读