small rtos学习笔记(1)

把陈大侠的那本官方资料看了两遍,有点小的理解了决定自己写个程序  

由于手头上有个东西是51读取键盘值之后发送给PC机并根据PC的相关指定做出动作  就以这个为例子  首先用prutues建个仿真用的文件

如下图


在两片245的后面接16个按钮  这个仿真电路就基本上完成了  

下面分析一下我要实现的功能

1.串口接收和发送命令

2.scan功能在串口收到scan指令的时候 任务scan运行并取出键值返回

3.runing指示灯在程序正常的情况下1s闪烁一下  当scan的时候就0.5s闪烁一下

由以上的功能可能要下列几个任务

void serialdatamanager这个用来当接收到时正确指令的时候结根据指令必送sem_scan_enable(0 or 1)使scan运行

void scan读取按键的值  当有有效按键的时候向PC返回

void flashing根据信号sem_scan_enable来调整闪烁的频率

要用的信号

seem_scan_enable

要用的队列

serialin

serialout

Small RTOS(51) 1.20.3v 说明文件 编写动机: 就像在嵌入系统中使用C语言替代汇编一样,在嵌入系统中使用RTOS是大势所趋。原因主要是现在在大多数情况下编程效率比执行效率重要(单片机便宜嘛)。但纵观51的RTOS,keil c51 所带的RTX Full 太大(6k多),且需要外部ram,又无源代码,很多时候不实用。RTX Tiny虽然小(900多字节),但是任务没有优先级和中断管理,也无源代码,也不太实用。而ucosII虽有源代码,但是它太大,又需要外部ram,所有函数又必须是重入函数,用在51这类小片内RAM的单片机上有点勉强。于是,我借鉴ucosII和RTX Tiny编写了Small RTOS 51,虽然它为51系列编写,但是它还是比较容易移植到其它CPU上。 与作者联系方法: 可以给chenmingji@tom.com(原chenmingji@163.net)写信,或是在www.zlgmcu.com.cn上的论坛ARM与ucosII区提问(目前本人是版主)或是在www.c51bbs.com的论坛上提问(不推荐。c51bbs和21ic网名均为cmj)。 版本号定义方式: a.bc.d a:主版本号,一般重大改变时改变它。 bc:次便本号,一般功能增加时改变它。 d:同一版本的修订序号。 版本升级: 1.20.3版 2004年6月8日 修正Os_q.c的一个BUG,造成FIFO发送数据时,在队列中有大量数据且队列较大时,可能会出错。 1.20.2版 2004年2月4日 修正for Keil c51的Os_cpu_c.c的StkDelB函数的BUG,它会影响任务删除的正确执行。 1.20.1版 2004年2月4日 修改OSWait(K_SIG | K_TMO, x) 只能通过信号唤醒的bug。 1.20.0版 2003年8月3日 支持任务动态建立与删除。函数功能向一般的RTOS靠拢。支持C51的重入函数(用关键字reentrant定义的函数)。支持动态内存分配(使用动态内存分配的任务必须使用重入栈)。 1.12.1版 2003年2月5日 修正OS_MAX_TASKS为8、16时的bug。同时修正一些小bug。 1.12.0版 2003年1月24日 OS_MAX_TASKS就是用户任务数量。同时修正一些小bug。 1.11.0版 2002年12月2日 各个任务具有自己的关中断计数器,不在互相影响(这意味着如果一个任务任务放弃CPU前关了中断,当它再次进入运行态时中断还是关的)。优先级最低的任务作为系统保留任务不再需要用户编写,同时节约一些内存。增加一些注释。更正在Keil C51下Memory Model为非Small 模式的Bug。 1.10.5版 2002年10月26日 更正许多小Bug。 1.10.4版 2002年10月6日 合并Os_cpu_a.asm和OS_CPU_A_task16.ASM。统一了一下代码风格 1.10.3版 2002年9月16日 修改了Os_cpu_a.asm和OS_CPU_A_task16.ASM的LoadCtx代码使之执行更快,代码更小 1.10.2版 2002年9月9日 更正OSWait()的Bug,在极端情况下,这个Bug可能造成可能锁死任务。 修改OSQIntPost()的Keil C51特殊代码,它会造成阅读障碍。 1.10.1版 2002年9月4日 更正OSTimeTick的Bug,它在keil c51中不会有问题,但移植的其它系统可能出错。 1.10版 2002年9月1日 增加Small RTOS 对消息队列(简化的)和信号量的支持;改变了开关中断的方式;增加可移植的变量定义;修正一些Bug。 1.00版 2002年6月20日 使用户可以进行更多的配置,可以禁止中断管理,51系列支持软的非屏蔽中断,并调整目录结构等. 0.60版 2002年5月10日 修改OS_CORE.c使之在keil c51可以重入。不再需要禁止覆盖分析。 0.52版
小型RTOS(Real-Time Operating System)是一种用于嵌入式系统的实时操作系统。RTOS51是基于8051单片机架构的小型RTOS。以下是我对学习RTOS51的一些笔记: 1. 了解RTOSRTOS是一种专为实时应用程序设计的操作系统。与通用操作系统(如Windows或Linux)不同,RTOS注重实时性、可预测性和资源效率。 2. 了解8051单片机:8051是一种经典的8位单片机架构,广泛用于嵌入式系统中。学习RTOS51之前,对8051单片机的基本原理和编程语言有一定的了解是必要的。 3. RTOS51特点:RTOS51具有紧凑、高效、可裁剪的特点,适用于资源受限的嵌入式系统。它提供了任务管理、时间管理、信号量、消息队列等基本功能。 4. 任务管理:RTOS51通过任务管理来实现多任务并发执行。任务可以是周期性的、非周期性的或中断驱动的。任务之间可以通过优先级来进行调度。 5. 时间管理:RTOS51提供了计时器和定时器功能,用于实现时间相关的操作。可以通过设置定时器中断来触发任务的执行。 6. 信号量:信号量用于实现任务间的同步和互斥机制。通过信号量,任务可以等待某个事件的发生或者获取共享资源的访问权。 7. 消息队列:消息队列用于实现任务之间的通信。任务可以发送消息到消息队列,其他任务可以从消息队列中接收消息。 8. 调试和错误处理:在开发过程中,调试和错误处理是非常重要的。RTOS51提供了丰富的调试功能和错误处理机制,方便开发和调试嵌入式应用程序。 以上是我对学习RTOS51的一些笔记,希望对你有帮助!如果你有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值