你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103 UCOSII实验-任务调度

[复制链接]
donatello1996 发布时间:2017-2-4 18:32
众所周知,UCOSII是非占先式实时操作系统,今天我就分享一下UCOSII最简单的使用体验——任务调度。首先我们我们可以在宏定义中设置任务的堆栈大小和优先级。程序执行main函数后即创建三个实时任务,创建任务的函数有四个参数是指向任务的函数指针,指向任务的数据指针,任务堆栈,任务优先级。main函数进入任务临界区时无法被中断打断,但是退出临界区后可以。 6.JPG
        创建任务后四个任务是并发执行(即同时开始执行)的,但由于STM32的CPU Cortex-M3是单核心单线程的,因此多个任务无法进行多线程并行执行,只能用基于优先级的时间片轮转调度算法来进行任务时间片分配,高优先级的,延迟时间短的任务可以获得更多的时间片,低优先级的的任务获得的时间片就少,因此,我们在分配任务优先级和设置任务延时时间时一定要注意,避免发生某个任务迟迟无法执行的情况。
3.JPG 4.JPG 5.JPG
        我创建了三个任务,led0_task是空任务,led1_task是将LED-PC13状态翻转的任务,ds18_task是用ds18b20检测温度并在串口输出的任务,这三个任务的堆栈分别是64,64,100,优先级分别是7,6,5。
2.JPG 6.gif
        不多说,上传一份工程文件。
工程.zip (3.79 MB, 下载次数: 108)
收藏 2 评论16 发布时间:2017-2-4 18:32

举报

16个回答
时光虫子 回答时间:2017-2-7 09:22:21
厉害啊,谢谢分享!
钊钊 回答时间:2017-2-7 10:21:26
这个说得还行,但是建议你使用系统自带的延时函数来延时,避免任务调度出现卡顿或者冲突
donatello1996 回答时间:2017-2-7 16:09:26
钊钊 发表于 2017-2-7 10:21
这个说得还行,但是建议你使用系统自带的延时函数来延时,避免任务调度出现卡顿或者冲突 ...

对,我的delay函数是基于SYSTICK的。
我爱卡111 回答时间:2017-2-7 17:58:49
对,我的delay函数是基于SYSTICK的
我爱卡111 回答时间:2017-2-7 17:59:05

对,我的delay函数是基于SYSTICK的
我爱卡111 回答时间:2017-2-7 17:59:23

对,我的delay函数是基于SYSTICK的
我爱卡111 回答时间:2017-2-7 17:59:41

对,我的delay函数是基于SYSTICK的
我爱卡111 回答时间:2017-2-7 17:59:56

对,我的delay函数是基于SYSTICK的
钊钊 回答时间:2017-2-8 15:26:13
楼上这兄台是卡了吗?
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版