懒猫爱飞

三、Cortex-M0上跑V2.86版的ucos_ii

0
阅读(6881)

  “五一”终于过完了,紧跟着“五四”也来了,虽然懒猫再加上几百天也不到28周岁,但“五四”这半天还是被老板无情的剥夺了,哎,剥夺就剥夺吧,这日子还要过,这工作还是要做,这年头什么都在涨价,唯有工资不会涨,出门在外讨口饭不容易,就慢慢奋斗吧……

         好了,现在切入正题,前几天试关在把UCOS-II移植到了M0开发板上,还不错,居然运行起来了,只是懒猫这几天有点忙,公司新的项目又是一大堆,所以懒猫还没有来得及整理,上面只简单的跑了两个小任务,别的东东只有抽空再慢慢加入了,如果你有兴趣可以先研究研究,到时可以与懒猫共同学习学习^_^

       由于ucos-ii代码不少,所以懒猫就不一一的帖出来,下面只贴出主程序,详细的工程文件可以参看附件:

 /**************************************************************************
 工程名称:LPC11xx_ucos_ii
 功    能: Cortex-M0上跑V2.86版的ucosii               
 编译环境: MDKV4.12                                                   
 时    钟: 外部12Mhz                    
 日    期: 11/04/25                                                          
 作    者: 懒猫爱飞
 修    改:null                                                                      
**************************************************************************/
#include "LPC11xx.h"                        /* LPC11xx definitions */
#include "gpio.h"
#include "config.h"
#include "device_init.h"
#include "ucos_ii.h"

//每一个任务要有一个堆栈
OS_STK TaskStartStk1[MaxStkSize];       //定义任务堆栈大小
OS_STK TaskStartStk2[MaxStkSize];       //定义任务堆栈大小

/************************************************************************/
/* 函数声明                */
/************************************************************************/
void TaskLed(void *nouse);
void myTask(void *nouse);

/**************************************************************************
// 函数名称 :int main (void)
// 函数功能 : 主函数
// 入口参数 : 无
// 出口参数 : 无
// 备    注 :无
**************************************************************************/
int main (void)
{
    CPU_IntDis();     //禁止所有中断
 DeviceInit();     //初始化设备
    OSInit();      //初始化OS

 OSTaskCreate(TaskLed, (void *)0, &TaskStartStk1[MaxStkSize-1],1);     //创建Led显示任务

 OSTaskCreate(myTask, (void *)0, &TaskStartStk2[MaxStkSize-1],2);
 OSStart();                                                             //启动ucos ii 永远不返回
}

/**************************************************************************
// 函数名称 :void TaskLed(void *nouse)
// 函数功能 : led触发任务
// 入口参数 : void *nouse
// 出口参数 : 无
// 备    注 :无
**************************************************************************/
void TaskLed(void *nouse)
{
    nouse=nouse;      //防止编译器警告
    CPU_IntEn();                     //开时钟节拍中断
    while(1)
    {
  LED_TOG;                     //板子上与P1口的第9脚连接的灯触发闪烁
        OSTimeDlyHMSM(0,0,0,500);    //每500ms触发一次  
    }   
}
/**************************************************************************
// 函数名称 :void myTask(void *nouse) 
// 函数功能 : led触发任务
// 入口参数 : void *nouse
// 出口参数 : 无
// 备    注 :无
**************************************************************************/
void myTask(void *nouse)
{
    nouse=nouse;              //防止编译器警告
    CPU_IntEn();                    //开时钟节拍中断
    GPIOSetDir(1,8,1);              //设置P1.8为输出口
 GPIOSetValue(1,8,1);            //初始化P1.8为高电平
    while(1)
    {
  GPIO_TOGGLE(1,8);           //板子上与P1口的第8脚连接的灯触发闪烁
        OSTimeDlyHMSM(0,0,0,100);   //每100ms触发一次
    }   
}

下面把工程文件上传上来:

 19188809849063.rar

把电路图也贴上来吧:

图1-1 led电路图


图1-2 MCU电路图

       关于ucos-ii的机制原理,懒猫在这里就先不写了,这个要在懒猫慢慢深入学习中去总结,去领悟才好。因为懒猫对UCOS_II的应用还是太熟,所以这次移植是参考     AVR_DIY(苹果另一半) 的移植,在此深表感谢,AVR_DIY的联系方式是:QQ       : 165292803(欢迎交流) email    : syyhcl@163.com如果你对ucos_ii也感兴趣或对M0感兴趣,欢迎与AVR_DIY或懒猫联系。 还要说明一点,懒猫用的下载器是CooCox Debugger,如果您 要使用其它仿真器请注意修改keil中的相关设置。
        懒猫的口号一如继往:

       每天进步一点点,开心多一点^_^