一 使用KEIL与STM32CubeMX创建一个stm32f7工程
省略
二 官方下载LiteOS源码
下载地址:https://github.com/LiteOS/LiteOS
三 复制LiteOS必要文件
LiteOS源码包里有很多文件,将我们需要的几个目录复制下来,目录如下:
- LiteOS\targets\STM32F103VET6_NB_GCC\OS_CONFIG
- LiteOS\kernel
- LiteOS\arch\arm\arm-m
- LiteOS\osdepends\liteos\cmsis
四 工程中添加LiteOS文件
在工程中新建LiteOS分组,添加代码,这些代码分别是:
- LiteOS\osdepends\liteos\cmsis\2.0\cmsis_liteos2.c
- \LiteOS\kernel\base\core 所有.c 文件
- \LiteOS\kernel\base\ipc所有.c 文件
- \LiteOS\kernel\base\mem\bestfit_little所有.c 文件
- \LiteOS\kernel\base\mem\common所有.c 文件
- \LiteOS\kernel\base\mem\membox所有.c 文件
- \LiteOS\kernel\base\misc所有.c 文件
- \LiteOS\kernel\base\om所有.c 文件
- \LiteOS\kernel\extended\tickless所有.c 文件
- \LiteOS\kernel\los_init.c
- \LiteOS\arch\arm\arm-m\src所有.c 文件
- LiteOS\arch\arm\arm-m\cortex-m7\keil\los_dispatch_keil.S
添加完代码后,如下图所示
五 配置头文件路径
我在复制代码下来后,对某些文件夹做了重命名等修改
六 修改stm32f7xx_it.c文件
注释如下两个中断:
- PendSV_Handler
- SysTick_Handler
移植完成,可以编译通过。
七 修改target_config.h文件
- 将#include "stm32f1xx.h" 修改为 #include "stm32f7xx.h"
- 需改BOARD_SRAM_START_ADDR宏的值为0x20020000
- BOARD_SRAM_SIZE_KB取值需小于0x60000byte,依据如下图所示.
八 LiteOS工程最好勾选Use Micro LIB
九 可以创建一个启动任务来进行简单的测试了
新建一个文件文件添加如下代码,然后在工程适当的位置调用os_init()函数就可以啦
#include "los_base.h"
#include "los_task.h"
UINT32 Start_Task_Handle;//定义任务句柄
UINT32 start_task(VOID)
{
while(1)
{
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
LOS_TaskDelay(1000);
}
}
void os_init(void)
{
LOS_KernelInit();//LiteOS初始化
TSK_INIT_PARAM_S task_init_param;
task_init_param.pcName = "start_task";
task_init_param.usTaskPrio = 3;
task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)start_task;
task_init_param.uwStackSize = 128;
LOS_TaskCreate(&Start_Task_Handle, &task_init_param);/* 创建任务 */
LOS_Start();//开启任务调度
}