网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 控制/MCU >

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

时间:2023-11-21 15:02

人气:

作者:admin

标签:

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

问题

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

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







审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信