迅维网

查看: 1335|回复: 0
打印 上一主题 下一主题

STM32F103 UCOSII实验-任务调度

[复制链接]
跳转到指定楼层
1#
发表于 2017-2-5 09:57:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 山东青岛 来自 山东青岛

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
众所周知,UCOSII是非占先式实时操作系统,今天我就分享一下UCOSII最简单的使用体验——任务调度。首先我们我们可以在宏定义中设置任务的堆栈大小和优先级。程序执行main函数后即创建三个实时任务,创建任务的函数有四个参数是指向任务的函数指针,指向任务的数据指针,任务堆栈,任务优先级。main函数进入任务临界区时无法被中断打断,但是退出临界区后可以。

                               
登录/注册后看高清大图

        创建任务后四个任务是并发执行(即同时开始执行)的,但由于STM32的CPU Cortex-M3是单核心单线程的,因此多个任务无法进行多线程并行执行,只能用基于优先级的时间片轮转调度算法来进行任务时间片分配,高优先级的,延迟时间短的任务可以获得更多的时间片,低优先级的的任务获得的时间片就少,因此,我们在分配任务优先级和设置任务延时时间时一定要注意,避免发生某个任务迟迟无法执行的情况。

                               
登录/注册后看高清大图

                               
登录/注册后看高清大图

                               
登录/注册后看高清大图

我创建了三个任务,led0_task是空任务,led1_task是将LED-PC13状态翻转的任务,ds18_task是用ds18b20检测温度并在串口输出的任务,这三个任务的堆栈分别是64,64,100,优先级分别是7,6,5。

                               
登录/注册后看高清大图

                               
登录/注册后看高清大图

        不多说,上传一份工程文件

工程.zip

3.79 MB, 下载次数: 0, 下载积分: 下载分 -2 分, 下载 1 次


您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复