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

    文章

    28

    浏览量

    9730
  • STM32单片机
    +关注

    关注

    58

    文章

    545

    浏览量

    57936
  • 裸机
    +关注

    关注

    0

    文章

    37

    浏览量

    6154

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

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

收藏 人收藏

    评论

    相关推荐

    单片机分时多任务

    本帖最后由 eehome 于 2013-1-5 09:44 编辑 单片机分时多任务
    发表于 08-17 15:56

    51单片机多任务设计

    51单片机多任务设计
    发表于 05-14 20:16

    如何去实现基于stm32的FreeRTOS多任务程序

    基于 stm32 的 FreeRTOS多任务程序实现一、什么是FreeRTOS二、AHT20数据采集原理电路绘制三、FreeRTOS的多任务程序设计四、参考资料一、什么是FreeRTO
    发表于 08-24 07:45

    如何去实现STM32单片机裸机程序的实时性处理呢

    如何去实现STM32单片机裸机程序的实时性处理呢?怎样去实现呢?
    发表于 11-16 08:20

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

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

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

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

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

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

    uCOS-III任务间切换的实现

    RTOS进行多任务管理。在引入RTOS的后,编程思想和裸机系统程序设计有所不同,我们会根据产品所要实现的功能,将整个系统分割成一个个独立的且无法返回的函数,这些函数也就是我们通常所讲的任务
    发表于 02-18 06:16

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

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

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

    采用Protothread实现实时多任务系统 在许多系统资源非常紧张的单片机应用中,使用实时操作系统进行任务调度来实现实时
    发表于 03-29 15:10 1293次阅读
    采用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>策略研究

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

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

    C语言标准库实现抢占式多任务资料

    C语言标准库实现抢占式多任务,使用C语言标准库实现,可以方便的移植到51单片机上,总的代码量243行,占用空间少,对于资源有限单片机也适用,
    发表于 12-31 18:00 4次下载

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

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

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

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