打印

本人写的一个基于ucosII的简单跑马灯例子

[复制链接]
11917|39
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
machunshui|  楼主 | 2008-7-4 21:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于IAR编译环境,虽然简单.

但却有ucos程序的使用的几个要素.

为了练习中断和邮箱,没有使用系统timer0时间片定时.

而是使用timer1定时,中断发生后,通过邮箱把要显示的led灯的位置送给显示任务.

ucosII编程的最大的一个好处是程序符合自然思维,把原来需要并行处理的地方串行化,感觉每个任务就是干自己关心的事情,需要共享资源的地方,等待互斥信号量即可,需要同步的时候等待二值信号量即可,需要别的任务的产生的数据,等待消息队列或者邮箱数据即可.

当然,各种同步互斥关系要用好,要花一点功夫,其实也不是很难,特别对于搞单片机底层程序的人,学习起来绝对比搞纯高级语言的人理解更深入.

总之,是非常方便,非常符合自然思维的习惯,随着硬件的性能的不断加强,使用嵌入式OS绝对是个趋势.

相关帖子

沙发
machunshui|  楼主 | 2008-7-4 21:46 | 只看该作者

忘传文件了

此处不对,见11,12楼重发的文件

使用特权

评论回复
板凳
machunshui|  楼主 | 2008-7-4 21:48 | 只看该作者

此处不对,见11,12楼重发的文件

此处不对,见11,12楼重发的文件

使用特权

评论回复
地板
huangqi412| | 2008-7-4 22:41 | 只看该作者

算沙发不?

使用特权

评论回复
5
Swd21ic| | 2008-7-5 00:04 | 只看该作者

re

顶你

使用特权

评论回复
6
ocon| | 2008-7-5 00:41 | 只看该作者

顶一下,得空再研究。

使用特权

评论回复
7
zyok| | 2008-7-5 08:54 | 只看该作者

先顶一下再看

使用特权

评论回复
8
古道热肠| | 2008-7-5 10:59 | 只看该作者

哈哈,前面发言还蛮好,到了后面,好象有些虚了

搞纯高级语言编程的人员也有他的优势,对各种结构体,指针的各种运用了如指掌,对整体应用的把握和分解比埋头做底层的想得更多.

使用特权

评论回复
9
machunshui|  楼主 | 2008-7-5 11:30 | 只看该作者

底层关系更为密切

说到程序,那当然高级语言编程的人想的多,

因为高级语言编程一般程序都比较大,各种模块之间的逻辑关系纷繁复杂,

不象底层软件,程序量一般较小,模块之间的逻辑关心不会很复杂,思维比较直线.


但是对于同步互斥关系的理解来说,搞底层软件的人理解还是容易点,因为这个东西基本上就是由对共享资源的访问,和任务之间配合引申而来的,与底层关系更为密切.

搞纯高级语言编程如果不牵涉到通信,还真不需要太关心同步互斥关系.

即使牵涉到通信,不要求高效率,不使用线程,也不需要太关心同步互斥关系.

使用特权

评论回复
10
xil| | 2008-7-5 13:02 | 只看该作者

解压不了

使用特权

评论回复
11
machunshui|  楼主 | 2008-7-5 13:41 | 只看该作者

重发一下,Blinky for ucos-e2.part01.rar

重发一下,Blinky for ucos-e2.part01.rar
相关链接:https://bbs.21ic.com/upfiles/img/20078/2007820135719921.rar

使用特权

评论回复
12
machunshui|  楼主 | 2008-7-5 13:42 | 只看该作者

重发一下,Blinky for ucos-e2.part02.rar

重发一下,Blinky for ucos-e2.part02.rar
相关链接:https://bbs.21ic.com/upfiles/img/20078/2007820135815337.rar

使用特权

评论回复
13
machunshui|  楼主 | 2008-7-5 13:48 | 只看该作者

21ic的300k上传限制太讨厌了

21ic的300k上传限制太讨厌了!

使用特权

评论回复
14
xil| | 2008-7-5 14:02 | 只看该作者

我们使用UCOS时是不是不需要管它的内核代码啊?

我们使用UCOS时是不是不需要管它的内核代码啊?只需要用UCOS提供的创建任务,等待消息队列等等这些由内核创建的函数就行了呀?

使用特权

评论回复
15
machunshui|  楼主 | 2008-7-5 14:21 | 只看该作者

是这样子

创建任务,等待消息队列这些机制都是由ucos保证的.

当然,具体一直到某一种芯片上,是要移植正确.

所谓创建任务就是ucos中登记任务信息,

ucos创建这个任务相关的资源,这个任务运行满足的时候,运行该任务,

任务的载体是一个函数,

该函数的特性是不会返回.


消息队列就是具有防止资源使用冲突机制的一段缓冲区.

使用特权

评论回复
16
jack.king| | 2008-7-5 14:59 | 只看该作者

受教育了,LZ能来个具体的例子分析不?

近来我也在学习UCOS但是有很多东西不能理解!
例如为了实现工业控制方面的一个动作,这个动作可能要先走行程开关来控制,然后总时间,然后又要走行程开关控制后这个动作完成,然后一般都有多个这个的动作,想问下LZ怎么来建立任务呢?是没有一个动作都建立一个任务还是,整体建立一个任务,有些东西又只要按下就输出相对应的点,无时间和行程无关,只要按住按键,这样的动作与上面所说的动作实现是用同样的方法吗?
 若有时间很想听听你的见解,谢谢了

使用特权

评论回复
17
machunshui|  楼主 | 2008-7-5 15:17 | 只看该作者

介绍一本好书吧

<<基于嵌入式实时操作系统的程序设计技术>>
周航慈 吴光文 著

楼上描述的不是很清楚,建议看看这边书,这本书只有200页,例子与理论结合,绝对是一本好书.

第三章,第四章专门讲任务划分,任务设计,要是看完以后,我觉得楼主不会再问这个问题了.

使用特权

评论回复
18
xil| | 2008-7-5 15:20 | 只看该作者

要谢谢楼主的回答哦~

请教一下,在谈实时系统时都是在谈任务,任务调度,信号量,消息队列,邮箱管理,内存管理,以前搞单片机完全没这种概念,现在要转变思想好困难啊,楼主能不能帮我理清一下思路啊?谢谢

使用特权

评论回复
19
machunshui|  楼主 | 2008-7-5 15:42 | 只看该作者

所谓任务就是一段功能代码

所谓任务就是一段功能代码,
其载体是函数,

根据实际情况建立任务,没有什么高深的.

可以看成裸奔里面的一个功能模块.


简单的如:

键盘任务,led显示任务,串口接收数据处理任务,串口发送任务等等,

就是一个功能模块而已.

具体怎么划分,要看实际情况.

使用特权

评论回复
20
xil| | 2008-7-5 15:50 | 只看该作者

书也看了

但好像书把OS和单片机分开了,以前一直用51,AVR,程序都在main里跑嘛,现在多了个RTOS,以前概念完全用不上,非常郁闷

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

153

主题

3224

帖子

4

粉丝