请选择 进入手机版 | 继续访问电脑版

EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 773|回复: 0

[转帖] 基于UC/OS 操作系统应用开发的一点经验

[复制链接]

10

主题

0

回帖

20

E币

技术员

Rank: 2

积分
20
发表于 2017-3-29 17:27:58 | 显示全部楼层 |阅读模式
从单片机“裸奔”程序,到基于时间片轮转调度器程序,到UC/OS操作系统开发,本人算是积累了一些经验;通过大量实践还是觉得基于UC/OS 操作系统程序最简单,效率最高。从一般应用角度来说,UC/OS_II比UC/OS_III更简单,程序更容易调试。后者,主要是在同优先级任务出现时提供了时间片轮转法调度器和中断程序管理,多了一些可剪裁的便于程序调试和优化的宏定义。UC/OS_III可堪称作为程序员学习C语言编程的经典之作。以下所说是基于已经移植好了UC/OS 操作系统工程模板。这里不说移植的事,因为自己还没有十分整明白。不过,各种风格的工程模板很多,拿来做些修改就能用。

       基于UC/OS 操作系统应用中出现错误最多的是:1,死机;有时候是一开机就直接死机,有时候是跑几分钟之后死机。这种情况一般是:a),任务优先级没有设置合理;b),任务堆栈过小,导致内存泄漏;c),时钟节拍频率过高,导致CPU负荷过重死机;可以通过,#define OS_TICKS_PER_SEC               200u   /* Set the number of ticks in one second节拍:5ms 调整;d),每个任务都必须有合理的延时,以便交出CPU使用权,让低优先级任务有机会使用CPU。

      注意:每个任务中不能有过长时间的延时,否则会造成严重后果。比如,控制一台电动机Y-△启动,工作流程是先电动机星型运行8-12秒,再延时1s,再切换到电动机三角形运行。就这么个简单玩意要真正做到控制自如,任意时刻可以操作启停电机,还不是那么简单的事。这个任务中就有如何处理长时间延时的问题。
积分规则
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-3-29 13:17 , Processed in 0.039152 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表