手把手教你移植uCOS-III到STM32作者:谭建裕时间:2015年8月27日1、建立工程文件夹1.1在uCOS-III中添加如下文件夹1.2在Libraries文件夹中放入STM32的库,这点不必多说了。1.3在USER文件夹中放入2、复制文件2.1将Micrium(uCOS-IIIV3.03)\Software\uCOS-III\Cfg\Template里的os_app_hooks.c;os_app_hooks.h;os_cfg.h;os_cfg_app.h复制到Cfg文件夹。2.2将Micrium(uCOS-IIIV3.03)\Software\uCOS-III\Ports\ARM-Cortex-M3\Generic\IAR里的os_cpu.h;os_cpu_a.s;os_cpu_c.c文件复制到Ports文件夹中。2.3将Micrium(uCOS-IIIV3.03)\Software\uCOS-III\Source里面的所有文件复制到Source文件夹中。2.4将Micrium(uCOS-IIIV3.03)\Software\uC-CPU里面的cpu_core.c;cpu_core.h;cpu_def.h复制到uC-CPU文件夹中。2.5将Micrium(uCOS-IIIV3.03)\Software\uC-CPU\ARM-Cortex-M3\IAR文件夹中的cpu.h;cpu_a.s;cpu_c.c复制到uC-CPU文件夹中。2.6将Micrium(uCOS-IIIV3.03)\Software\uC-CPU\Cfg\Template里的cpu_cfg.h复制到uC-CPU文件夹中。2.7将Micrium(uCOS-IIIV3.03)\Software\uC-LIB里面的lib_ascii.c;lib_ascii.h;lib_def.h;lib_def.h;lib_math.c;lib_math.h;lib_mem.c;lib_mem.h;lib_str.c;lib_str.h复制到uC-LIB文件夹中。2.8将Micrium(uCOS-IIIV3.03)\Software\uC-LIB\Cfg\Template文件夹中的lib_cfg.h复制到uC-LIB文件夹中。2.9将Micrium(uCOS-IIIV3.03)\Software\EvalBoards\Micrium\uC-Eval-STM32F107\IAR\uCOS-III-Ex1文件夹中app_cfg.h;os_cfg.h;os_cfg_app.h;文件复制到APP文件夹中。2.10将Micrium(uCOS-IIIV3.03)\Software\EvalBoards\Micrium\uC-Eval-STM32F107\IAR\uCOS-III-Ex1里面的os_type.h复制到Source文件夹中。3、新建工程3.13.23.33.43.53.63.73.83.94修改os_cpu_a.asm文件4.1将PUBLIC替换成EXPORT(共三处)4.2将替换成5、修改STM32启动文件5.1将文件内所有PendSVHandler替换成OS_CPU_PendSVHandler6、修改cpu_a.asm文件6.1将文件内的所有PUBLIC修改为EXTERN(共9处)6.2将替换成6.3将所有函数的:去掉7、修改os_cfg.h,裁剪内核#defineOS_CFG_APP_HOOKS_EN0u#defineOS_CFG_OBJ_TYPE_CHK_EN0u#defineOS_CFG_TS_EN0u#defineOS_CFG_SCHED_LOCK_TIME_MEAS_EN0u#defineOS_CFG_FLAG_EN0u#defineOS_CFG_MUTEX_EN0u#defineOS_CFG_Q_EN0u#defineOS_CFG_SEM_EN0u#defineOS_CFG_TASK_CHANGE_PRIO_EN0u#defineOS_CFG_TASK_Q_EN0u#defineOS_CFG_TASK_PROFILE_EN0u#defineOS_CFG_TASK_SEM_PEND_ABORT_EN0u#defineOS_CFG_TMR_EN0u8、修改os_cpu_c.c文件注释voidOS_CPU_SysTickHandler(void)和voidOS_CPU_SysTickInit(CPU_INT32Ucnts)函数。9、修改os_cpu.h文件注释://voidOS_CPU_SysTickHandler(void);//voidOS_CPU_SysTickInit(CPU_INT32Ucnts);10、在stm32f10x_it.c文件中添加#includeos.hvoidSysTick_Handler(void){OSIntEnter();OSTimeTick();OSIntExit();}//**********************************************************************************************************************************************uCOS-III的移植过程到此结束,下面我们来创建一个任务//1、新建led.c和led.h2、新建BSP.c和BSP.h3、新建app.c和app.h文件4、新建includes.h5、编写main函数最后将程序下载进STM32中,那么就可以看到LED闪亮了。