建立一个属于自己的AVR的RTOS.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
建立一个属于自己的AVR的RTOS 建立一个属于自己的AVR的RTOS 建建立立一一个个属属于于自自己己的的AAVVRR的的RRTTOOSS 自从03年以来,对单片机的RTOS的学习和应用的热潮可谓一浪高过一浪.03年,在离 开校园前的,非典的那几个月,在华师的后门那里买了本邵贝贝的《UCOSII》,通读了几次, 没有实验器材,也不了了之。 在21IC上,大家都可以看到杨屹写的关于 UCOSII 在51上的移植,于是掀起了51 上 的RTOS的热潮。 再后来,陈明计先生推出的 small rots,展示了一个用在 51 上的微内核,足以在52 上 进行任务调度。 前段时间,在ouravr上面开有专门关于AVR 的Rtos的专栏,并且不少的兄弟把自己 的作品拿出来,着实开了不 少眼界。这时,我重新回顾了使用单片机的经历,觉得很有必 要,从根本上对单片机的RTOS的知识进行整理,于是,我开始了编写一个用在AVR 单片 机的 RTOS。 当时,我所有的知识和资源有: Proteus6.7可以用来模拟仿真avr系列的单片机 WinAVR v8 基于GCCAVR 的编译环境,好处在于可以在C 语言中插入asm的 语句 mega8 1K的ram 有8K 的rom,是开发8 位的RTOS的一个理想的器件,并且我对它 也比较熟悉。 写UCOS的JeanJ.Labrosse在他的书上有这样一句话,“渐渐地,我自然会想到,写个 实时内核直有那么难吗?不就是不断地保存,恢复CPU的那些寄存器嘛。” 好了,当这一切准备好后,我们就可以开始我们的Rtosformega8的实验之旅了。 本文列出的例子,全部完整可用。只需要一个文件就可以编译了。我相信,只要适当可 用,最简单的就是最好的,这样可以排除一些不必要的干扰,让大家专注到每一个过程的学 习。 第一篇:函数的运行 在一般的单片机系统中,是以前后台的方式(大循环+中断)来处理数据和作出反应的。 例子如下: makefile 的设定:运行WinAvr中的Mfile,设定如下 MCU Type: mega8 Optimization level: s Debug format:AVR-COFF C/C++ sourcefile: 选译要编译的C 文件 #include avr/io.h void fun1(void) { unsigned char i=0; while(1) { PORTB=i++; PORTC=0x01(i%8); } } int main(void) { fun1(); } 首先,提出一个问题:如果要调用一个函数,真是只能以上面的方式进行吗? 相信学习过C语言的各位会回答,No!我们还有一种方式,就是“用函数指针变量调用 函数”,如果大家都和我一样,当初的教科书是谭浩强先生的《C 程序设计》的话,请找回 书的第9.5节。 例子:用函数指针变量调用函数 #include avr/io.h void fun1(void) { unsigned char i=0; while(1) { PORTB=i++; PORTC=0x01(i%8); } } void (*pfun)(); //指向函数的指针 int main(void) { pfun=fun1; // (*pfun)(); //运行指针所指向的函数 } 第二种,是“把指向函数的指针变量作函数参数” #include avr/io.h void fun1(void) { unsigned char i=0; while(1) { PORTB=i++; PORTC=0x01(i%8); } } void RunFun(void (*pfun)()) //获得了要传递的函数的地址 { (*pfun)(); //在RunFun 中,运行指针所指向的函数 } int main(void) { RunFun(fun1); //将函数的指针作为变量传递 } 看到上面的两种方式,很多人可

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档