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

描述

问题

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

裸机

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

代码实例:

裸机

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

代码

定义结构体:

Delay:时间片执行时长;

Period:任务执行周期。

裸机

添加(创建)任务:

裸机

删除任务:

裸机

更改任务:

裸机

执行调度器:

裸机

定时器查询时间片:

裸机

测试

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

裸机

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

裸机

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

裸机







审核编辑:刘清

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分