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

2011-5-5 14:25 5886 14 19 分类: MCU/ 嵌入式

      “五一”终于过完了,紧跟着“五四”也来了,虽然懒猫再加上几百天也不到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触发一次
    }   
}


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


attachment download


把电路图也贴上来吧:


ce05b437-df6f-4acc-90c7-d789eaa217de.jpg


图1-1 led电路图


0b621560-b8e4-4da0-bd89-4dbc517a0f16.jpg
图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中的相关设置。
        懒猫的口号一如继往:


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

PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

用户540763 2016-1-29 16:29

太好了,正在找这方面的资料,多谢指点.

cz81_503897891 2011-6-14 17:30

不错,真想学ucos!是在什么平台下移植的啊?iar还是linux...?

xucun915_925777961 2011-5-6 17:37

嗯,好的,多谢指点,我再试试哦,电路图是DEMO板自带的,没有再自己画……

用户1010551 2011-5-6 14:53

你的GPIO口最好用下拉电阻,不然上电会误导通LED灯。

用户244280 2011-5-6 13:33

原理图上网络标号用PIO2_3之类的很不直观哦
相关推荐阅读
xucun915_925777961 2013-04-28 11:31
毕业后的五年拉开大家差距的原因在哪里?【转】
  有人工作,有人继续上学,大家千万不要错过这篇文章,能看到这篇文章也是一种幸运,真的受益匪浅,对我有很大启迪,这篇文章将会改变我的一生,真的太好了,希望与有缘人分享,也希望对有缘人有所帮助!...
xucun915_925777961 2013-03-31 20:28
职场大牛精彩总结:职场上,如何做人做事做管理【转】(文/张子阳)
      大道至简,越是根源和基本的问题,道理实际上越简单。关于如何做人、做事、做管理的书很多,我看得不多,但是我觉得这些书更多是侧重技术和实现细节上的,而很少从人的思想和观念去讲。实际...
xucun915_925777961 2013-03-28 14:03
介绍几种优秀的UML工具
统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言...
xucun915_925777961 2013-03-27 18:05
IAR EW FOR 8051 修改工程名称的方法
        近段时间一直在搞蓝牙4.0的开发任务,所以用到了IAR编译器,话说IAR编译器用途蛮广,可以编译MSP430,ARM,还有TI的51核芯片,当然,这要不同的版本,我现在用的是for...
xucun915_925777961 2013-03-26 16:40
Cortex-M3学习日志(八)-- TFT实验Part(a)
    自己用的LPC1768的开板带有一块2.4寸的TFT彩色液晶屏,虽然自己工作中还用不过显示屏,但是晚上闲着也是闲着,于是继续玩咱的LPC1768吧。 我的开发板上的液晶屏的用的是SPI接口,当...
xucun915_925777961 2013-03-25 20:48
说说那几款查看源代码的工具
说说那几款查看代码的工具 今天给大家介绍几款单片机工程师所喜欢的几款查看源代码的工具,这几款工具在懒猫的日常工作中可是帮了不少忙。 一、 Source Insight     Source Insig...
我要评论
5
14
关闭 站长推荐上一条 /3 下一条