ucos-ii的移植例子

ucos-ii的移植例子

ID:37512565

大小:37.50 KB

页数:9页

时间:2019-05-24

ucos-ii的移植例子_第1页
ucos-ii的移植例子_第2页
ucos-ii的移植例子_第3页
ucos-ii的移植例子_第4页
ucos-ii的移植例子_第5页
资源描述:

《ucos-ii的移植例子》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、两个任务分别控制一个led,位于PB4和PB5.PB4上的led每秒闪一次,PB5上的led每四秒闪一次。#include"lf2407.h"#include"ucos_ii.h"OS_STKMain_TaskStk[64];OS_STKSub_TaskStk[64];voidMain_Task(void*data);voidSub_Task(void*data);voidInitCPU(void){        SCSR1=0x00fd;    SCSR2=(SCSR2

2、0x000b)&0x000f;   

3、 WDCR=0x00e8;    WSGR=0x0040;        MCRA=0x0FFF;    PBDATDIR=PBDATDIR

4、0x0F000;        T2CON=0x0000;    GPTCONA=0x0000;        T2CNT=0x0000;    T2PR=50000;    T2CON=0xd340;        IMR=0x0000;    IFR=0x003f;    IMR=0x0004;        EVAIFRA=0xFFFF;    EVAIFRB=0x

5、FFFF;    EVAIFRC=0xFFFF;    EVAIMRA=0x0000;    EVAIMRB=0x0000;    EVAIMRC=0x0000;    EVBIFRA=0xFFFF;    EVBIFRB=0xFFFF;    EVBIFRC=0xFFFF;    EVBIMRA=0x0000;    EVBIMRB=0x0000;    EVBIMRC=0x0000;    asm("CLRCINTM");}intmain(void){    InitCPU();    OSInit(); 

6、   OSTaskCreate(Main_Task,(void*)0,&Main_TaskStk[63],0);    OSStart();    return0;}voidMain_Task(void*p_arg){        EnableTick();    OSTaskCreate(Sub_Task,(void*)0,&Sub_TaskStk[63],10);        while(1)    {            PBDATDIR

7、=0x0010;            OSTimeDlyH

8、MSM(0,0,0,500);            PBDATDIR&=0x0ffef;            OSTimeDlyHMSM(0,0,0,500);    }}voidSub_Task(void*p_arg){                while(1)    {            PBDATDIR

9、=0x0020;            OSTimeDlyHMSM(0,0,2,0);            PBDATDIR&=0x0ffdf;            OSTimeDlyH

10、MSM(0,0,2,0);    }}ucos-ii的移植及rtos下的应用APIFOR44B0要保证μC/OS-Ⅱ移植到微处理器后能正确运行;处理器需具备如下特性:1)处理器的c编译器支持可重入函数可重入的代码指的是一段代码(如一个函数)可以被多个任务同时调用,而不必担心会破坏数据。也就是说,可重入型函数在任何时候都可以被中断执行,过一段时间以后又可以继续运行,而不会因为在函数中断的时候被其他的任务重新调用,影响函数中的数据。下面的两个例子可以比较可重入型函数和非可重入型函数:程序1:可重入型函数voidsw

11、ap(int*x,int*y)inttemp;temp=*x;*x=*y;*y=temp;程序2:非可重入型函数inttemp;voidswap(int*x,int*y)temp=*x;*x=*y;*y=temp;程序1中使用的是局部变量temp作为变量。通常的C编译器,把局部变量分配在栈中。所以,多次调用同一个函数,可以保证每次的temp互不受影响。而程序2中temp定义的是全局变量,多次调用函数的时候,必然受到影响。代码的可重入性是保证完成多任务的基础,除了在C程序中使用局部变量以外,还需要C编译器的支持。

12、笔者使用的是ARMSDT以及ADS的集成开发环境,均可以生成可重入的代码。2)在程序中可以打开和关闭中断在μC/OS-Ⅱ中,可以通过OS_ENTER_CRITICAL()或者OS_EXIT_CRITICAL()宏来控制系统关闭或者打开中断。这需要处理器的支持,在ARM7TDMI的处理器上,可以设置相应的寄存器来关闭或者打开系统的所有中断。3)处理器支持中断,并且能产生定时器中断(uc/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。