NXP

UCOS-III——LPC1768移植

2019-07-12 12:07发布

硬件化境:LPC1768 CPU

软件环境:Keil 5

源代码下载地址:https://www.micrium.com/download/micrium_lpc1768-sk_ucos-iii/

源代码版本:

μC/OS-III Version: v3.03.01 μC/CPU Version: v1.29.01 μC/ LIB Version: v1.37.00

移植代码分享:LPC1768_UCOSIII.rar

  1.  建立工程,添加C文件以及相应的头文件路径,在BSP目录中加入自己的驱动,本次移植以bsp_led.c为例,其头文件为bsp_led.h。v3.03.01版本的LPC1768-ucosIII系统中包含CSP文件包,是芯片级封装,感觉类似于STM32的库,若没有特定的CSP进行封装,移植后的OS也可以支持其他Cotex-M3内核的微控制器。 整个工程共可分成两个文件夹,分别是Project和User,Project文件夹存放的是建立工程时Keil生成的工程相关的文件,User文件夹存放的则是ucos-III的源码文件。下图为User下存放的文件夹目录。 2.  在启动文件中,将PendSV_Handler全部替换成OS_CPU_PendSVHandler,将SysTick_Handler全部替换成OS_CPU_SysTickHandler,共6处。或者直接将工程启动文件换成Evalboards例程中BSP目录下的cstartup.s文件。 3.  需要修改bsp.h和bsp.c。首先,在bsp.h中添加自己的驱动头文件,#include “bsp_led.h”。 4.  在bsp.h中,将部分宏和函数声明删除,包括按键的宏,LED的函数,PB的函数,按键的函数,只保留BSP_Init函数和BSP_Start函数。BSP_Init()函数对硬件进行配置,在主要函数CPU初始化之后进行调用;BSP_Start()函数获取CPU时钟,并进行systick初始化,在初始任务中调用。将bsp.h下面自带的宏删除,包括GPIO的宏,BSP CONSTANS VALUES的宏和MACRO'S的宏,但是要保留寄存器的宏,因为在下面的时间戳函数中使用。   5.  在bsp.c中,将BSP_Init()函数中的内容全部删除,其主要工作是配置始终和GPIO引脚。替换成自己BSP文件的初始化和配置函数,在这里以bsp_led.c的LED_Init()为例。然后,将下面自带的函数,包括各种按键,LED,PB函数,保留时间戳相关的函数。 6.最终的主要函数在app.c中.main函数在一系列初始化后,会进行“App Task Start”任务的创建(简称Start任务),在系统开始时首先进行这个任务。在Start任务中,我们也可以创建其他的或者任务,创建完成后将Start任务删除。本次移植为了简洁,只创建执行Start任务。将App_TaskStart中的BSP_LED_Off(0)删掉,并将循环中的函数改为自己的LED驱动函数。 至此移植工作完成,可以观察到LED一秒toggle一次。整个移植过程的关键就是将其例程开发板的BSP替换成自己的开发板的BSP,而其他系统的框架则都已经由官方搭建完整。