在RTX51 Tiny应用中,我们不需要编写main函数,因为main函数已经由RTX51 Tiny内核实现了。一个基于RTX51 Tiny的应用程序,都是从任务0(task0)开始运行的。上面的代码中,除了task0之外,其他的任务都是一个while(1)死循环。task0的作用是负责系统的初始化,上述代码在这个任务中首先关闭了四个LED,然后通过os_create_task(id)函数创建了五个任务,task0的最后一个步骤是通过os_delete_task(id)函数删除自身,使task0退出任务链表...
分类:
其他好文 时间:
2014-06-16 20:51:57
阅读次数:
353
RTX51 Tiny是一种实时操作系统(RTOS),可以用它来建立多个任务(函数)同时执行的应用(从宏观上看是同时执行的,但从微观上看,还是独立运行的)。
实时操作系统能灵活的调度系统资源,像CPU和存储器,并且提供任务间的通信。RTX51 Tiny是一个功能强大的RTOS,且易于使用,它用于8051系列的微控制器。该RTOS最多支持16个任务,基于RTX51 Tiny构建的应用程序没有main( )函数,是从任务0开始执行的。...
分类:
其他好文 时间:
2014-06-15 13:26:11
阅读次数:
184
代码规模日益增大和基于RTOS的多线程技术使嵌入式软件开发越来越关注“并发控制和线程安全”,当多个执行线程(指正在运行代码的任意上下文,包括线程和中断服务程序)需要访问相同的共享资源时(包括软件数据和硬件资源),就可能因为竞态而导致错误。这种错误容易制造,但很难找到,从设计上保证正确性收益更大。...
分类:
编程语言 时间:
2014-06-14 14:18:36
阅读次数:
389
lwIP作为RTOS准标配的TCP/IP,在我们编写网络模块时,经常用到。
本移植笔记使用lwIP的版本为V1.4.1。
MDK: V4.0+
RTOS: μC/OS-II V2.91
Eval-Board: LPC1752
Ethernet: ENC28J60
移植lwIP到OS其实就是实现sys.h的过程。...
分类:
其他好文 时间:
2014-06-04 21:52:32
阅读次数:
635
IDE: MDK V4+
MCU: LPC17xx(Cortex-M3)
RTOS: µC/OS-II
升级顺序:V2.52->V2.62->V2.76->V2.86->V2.91
V2.52
一、startup*.s (startup_lpc17xx.s)
1. 更改两个中断服务函数名称
...
分类:
其他好文 时间:
2014-05-26 06:12:20
阅读次数:
326
/*
使用keil4
可运行8个任务
任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来。
*/
#include "STC12C5A...
分类:
编程语言 时间:
2014-05-26 05:05:42
阅读次数:
419
CRTOS 实时可剥夺型内核
1.任务不用预加载,不用预定义。任务调用时加载,可删除(退出死循环即可)
2.单位轮转查询时间由晶振和定时器初始化决定。在这里为10ms
3.定时时间为【 time*单位轮转查询时间 】 ,其中time为 rtos_wait(time)中time.
4.可运行多个任务【自定义】
5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来,任务执行后,回到中断,再从中断回到主程序。...
分类:
编程语言 时间:
2014-05-26 03:59:52
阅读次数:
323
4个任务
/*
使用keil4
可运行8个任务
任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来。
*/
#include "STC12C5A.H"
#define TIMER_RELOAD() {TL0=0x00;TH0=0xC4;}//使能T/C 初始10ms
#define MAX_TASKS 8 //任务槽最大个数.
unsig...
分类:
编程语言 时间:
2014-05-25 02:03:17
阅读次数:
293
CRTOS 实时可剥夺型内核
1.任务不用预加载,不用预定义。任务调用时加载,可删除(退出死循环即可)
2.单位轮转查询时间由晶振和定时器初始化决定。在这里为10ms
3.定时时间为【 time*单位轮转查询时间 】 ,其中time为 rtos_wait(time)中time.
4.可运行多个任务【自定义】
5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来,任务执行后,回到中断,再从中断回到主程序。...
分类:
编程语言 时间:
2014-05-24 19:51:06
阅读次数:
324
/*
CRTOS 实时可剥夺型内核
1.任务不用预加载,不用预定义。任务调用时加载,可删除(退出死循环即可)
2.单位轮转查询时间由晶振和定时器初始化决定。在这里为10ms
3.定时时间为【 time*单位轮转查询时间 】 ,其中time为 rtos_wait(time)中time.
4.可运行多个任务【自定义】
5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回...
分类:
编程语言 时间:
2014-05-24 14:22:34
阅读次数:
372