搜索
bottom↓
回复: 3

也来个ucos2移植IAR8051

[复制链接]

出0入0汤圆

发表于 2009-6-15 12:43:05 | 显示全部楼层 |阅读模式
也来个ucos2移植IAR8051.

mcu是CC1110,有4K的XDATA,非传统移植,只保护部分寄存器,不保证正确。

说明:
1.上下文切换只保护部分寄存器:r2,r3,r6,r7,V0-Vn,VB,EA,DPH,DPL,SP
2.OSCtxSw替代OSIntCtxSw
3.中断写法为C一般中断写法

注意必须设置为:
Code Model:Near
Data Model:Large
Calling Convention:XDATA Stack Reetrant
Number of DPTRS:1

#include "config.h"

#define TASK1_STK_SIZE 150
#define TASK2_STK_SIZE 150

OS_STK Task1Stk[TASK1_STK_SIZE];
OS_STK Task2Stk[TASK2_STK_SIZE];

void Task1(void *pdata)
{
volatile float f1=(int)pdata;   //初始化浮点数
while(1)
    {  
       P0_6=!P0_6;              //LED0翻转
       f1+=0.1;        //浮点数测试
       OSTimeDly(OS_TICKS_PER_SEC/2);
    }
}

void Task2(void *pdata)
{
volatile float f2=(int)pdata;   //初始化浮点数
while(1)
    {     
         P0_7=!P0_7;         //LED1翻转
         f2+=0.1;        //浮点数测试
         OSTimeDly(OS_TICKS_PER_SEC/3);
    }
}


int main()
{
    CLK_RC_TO_XOSC();   //主时钟有RC切换到外部晶振26M
   
    P0DIR|=_BV(6)|_BV(7); //LED0,LED1设置为输出

    TMR_TicksInit();     //时钟节拍中断初始化,使用T4,中断频率OS_TICKS_PER_SEC=100HZ
   
    OSInit();            //系统初始化

    OSTaskCreate(Task1,(void *)1,&Task1Stk[TASK1_STK_SIZE-1],1);  //创建任务1,优先级1
    OSTaskCreate(Task2,(void *)2,&Task2Stk[TASK2_STK_SIZE-1],2);  //创建任务2,优先级2
   
    OSStart(); //任务开始调度 (任务第一次运行会自动开中断)
     
   
    while(1)
    {  
     
    }
}

ISR(T4_VECTOR)
{
    EA=0;
   
    T4OVFIF = 0;
    T4IF = 0;
    OSIntEnter();
   
    OSTimeTick();   //系统时钟节拍
   
    OSIntExit();  
   
    EA=1;
}

点击此处下载 ourdev_453385.rar(文件大小:300K) (原文件名:ucos.7z.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2009-6-15 13:04:38 | 显示全部楼层
嗯,不错!

出0入0汤圆

 楼主| 发表于 2009-6-15 16:40:11 | 显示全部楼层
我把ucos2的中断处理做了改动。

1.切换任务不区分中断和非中断。不管什么地方(包括中断中)切换任务,当再次切换回来,就回什么地方。
2.没必要对中断嵌套计数,但仍可采用中断嵌套计数写法。本身这个嵌套计数已经失去意义。
3.中断写法是一般C语言写法。

以上处理简化了UCOS中断处理,这样做会不会产生其他副作用,就不得而知((个人基本不用UCOS,对UCOS也不熟悉)

出0入0汤圆

发表于 2012-6-15 19:32:58 | 显示全部楼层
标记好了。马克帕克。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 11:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表