“五一”终于过完了,紧跟着“五四”也来了,虽然懒猫再加上几百天也不到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触发一次
}
}
下面把工程文件上传上来:
把电路图也贴上来吧:
图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中的相关设置。
懒猫的口号一如继往:
每天进步一点点,开心多一点^_^
用户540763 2016-1-29 16:29
cz81_503897891 2011-6-14 17:30
xucun915_925777961 2011-5-6 17:37
用户1010551 2011-5-6 14:53
用户244280 2011-5-6 13:33