XinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.1/32ZHIFACHENstm32f103ucosii移植目录stm32f103ucosii移植................................................................................................................................................11.1ucOS源码获得........................................................................................................................................11.2移植步骤.................................................................................................................................................51.2.1裸机工程准备...................................................................................................................................51.2.2复制相关ucos移植文件.................................................................................................................51.2.3添加ucos源码和移植cpu相关源码。..........................................................................................61.2.4添加ucos源码和移植cpu相关头文件路径................................................................................141.2.5编译纠错.........................................................................................................................................151.2.6修改裸机的main()函数,实现ucos编程模板。.........................................................................221.2.7测试系统是否能正常工作。..........................................................................................................301.3附录相关源码工程.....................................................................................................................................311.1ucOS源码获得登陆ucos官方网站,如下所示:点击网站上方的Login/Registration,进行登陆或注册一个新帐号。如果没有帐号要先注册一个,注册过程不再描述。我已经有帐号,直接登陆。XinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.2/32ZHIFACHEN点击后转入登陆界面,网址是,直接输入这个进行登陆也可以,界面如下:在这个界面中输入用户名和密码,点击LogIn,即可以进入,登陆后可以下载网站上的免费资源。XinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.3/32ZHIFACHEN点击上面的“DownloadsCenter”,进入下载页面。点击”STMicroelectronics”,进入ST公司芯片的ucos工程下载页面。点击上面的下载图标后,可以下载到ucos工程代码,名字是Micrium_STM32xxx_uCOS-II.exe,这是一个自解XinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.4/32ZHIFACHEN压的文件,双击解压。。解压后得到一个文件夹,里面有我们需要的全部文件,目录结构如下:XinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.5/32ZHIFACHEN1.2移植步骤1.2.1裸机工程准备随便拿一个stm32f103ze的裸机工程,我这里使用usart1-dma-rec这个工程,这个工程很普通,只是一个简单的urat工程。工程源码结构如下所示:1.2.2复制相关ucos移植文件1.复制ucos系统源码打开从官方网站下载的解压好的源码工程文件夹,复制Micrium\Software\uCOS-II文件夹到裸机工程文件夹中。2.复制ucos配置头文件在Micrium\Software\EvalBoards\ST\STM3210E-EVAL\RVMDK\OS-Probe目录中找到includes.h,os_cfg.h两个文件,复制到裸机工程的usart1-dma-rec\uCOS-II\Source目录中。XinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.6/32ZHIFACHEN复制后,目录文件如下:1.2.3添加ucos源码和移植cpu相关源码。打开裸机工程,添加上一步复制过来的ucos源码到keil工程中。XinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.7/32ZHIFACHENXinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.8/32ZHIFACHENXinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.9/32ZHIFACHENXinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.10/32ZHIFACHENXinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.11/32ZHIFACHENXinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.12/32ZHIFACHENXinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.13/32ZHIFACHEN以下添加后工程源码结构。XinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.14/32ZHIFACHEN1.2.4添加ucos源码和移植cpu相关头文件路径XinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.15/32ZHIFACHEN1.2.5编译纠错1.编译看是否有头文件缺失。编译结果如下,显示缺少头文件。接下来打开ucos_ii.h文件,把#includeapp_cfg.h语句注释。如下所示:XinYingDaElectronicsCo.,Ltd.stm32f103ucosii移植2014/4/4XinYingDaElectronicsCo.,Ltd.16/32ZHIFACHEN修改后,保存,再进行编译,查看编译情况。编译后,还有报了一堆的错误,错误信息如下:.\obj\usart1.axf:Error:L6218E:UndefinedsymbolApp_TCBInitHook(referredfromos_cpu_c.o)..\obj\usart1.axf:Error:L6218E:UndefinedsymbolApp_TaskCreateHook(referredfromos_cpu_c.o)..\obj\usart1.axf:Error:L6218E:UndefinedsymbolApp_TaskDelHook(referredfromos_cpu_c.o)..\obj\usart1.axf:Error:L6218E:UndefinedsymbolApp_TaskIdleHook(referredfromos_cpu_c.o)..\obj\usart1.axf:Error:L6218E:UndefinedsymbolApp_TaskStatHook(referredfromos_cpu_c.o)..\obj\usart1.axf:Error:L6218E:UndefinedsymbolApp_TaskSwHook(referredfromos_cpu_c.o)..\obj\usart1.axf:Error:L6218E:UndefinedsymbolApp_TimeTickHook(referredfromos_cpu_c.o)..\obj\usart1.axf:Error:L6218E:UndefinedsymbolOS_CPU_SysTickClkFreq(referredfromos_cpu_c.o).Notenoughinformationtolistimagesymbols.Finished:1information,0warningand8errormessages..\obj\usart1.axf-8Error(s),0Warning(s).Targetnotcreated很明显,上面这几个错误都是由于os_cpu_os.c文件中引用了未定义的函数导致的,这种错误有两处情况,一种是函数有实现,但是没有声明,另外一种是函数根据没有实现。直接使用了,也是就说我们复制文件少了某些文件。但是这些函数从名字上看是属于用户自定义的钩子函数,这种函数对我们来说是不需要的,所以我们打开os_cpu_os.c文件进行修改。打开os_cpu_os.c文件后,