提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

LiteOS移植到STM32F103系列单片机

  • 前言
  • 一、下载老版本liteos
  • 二、参考官方的推荐移植步骤
    • 1.新建项目
      • 1.1打开keil创建 一个空项目,命名为test_liteos

前言

一直想把liteos移植到STM32单片机或者GD32的单片机,最近有点空闲,找了相关资料,发现官方提供的资料非常的全面,唯一的缺点就是,资料上提供的移植方法和git上下载的liteos源码对应不上,所以就找了一下老版本的liteos源码用来练习,后面再下载最新的liteos源码来移植
老版本liteos下载链接
liteos中文网
[LiteOS移植]目标芯片STM32F1系列汇总贴


提示:以下是本篇文章正文内容,针对老版本liteos移植的使用说明,新手对移植有点懵的可以尝试一下,你会发现怎么这么简单。。。。。。

一、下载老版本liteos

老版本liteos下载链接,从此链接下载的文件,我把其它没用的干扰文件全部删除掉了,当你需要深入学习时可以从git上再去下载完整版本。
从git上下载下来的完整文件夹是这样的

但是对移植有用的只有arch和kernel文件夹,其它的文件或者相关文档你要有兴趣也可以打开看看

二、参考官方的推荐移植步骤

1.Keil平台 5.18a

CMSIS版本:5.2.0

1.新建项目

使用keil5新建一个项目,并且使用版本较高的CMSIS,如果移植后编译提示缺少 __get_IPSR 函数,就是CMSIS版本过低导致的。(不建议使用STM32标准库移植,因为标准库的版本比较低,移植会出错)

1.1打开keil创建 一个空项目,命名为test_liteos


单片机我选择的是STM32F103VE

然后选择CMSIS核心文件和启动文件

新建一个名称为main.c的源文件,保存后将文件加入到项目中

添加基本代码到main.c文件

#include "stm32f10x.h"
int main(void)
{while (1){}
}

选择编译器版本,我的只有选择V5.06才能编译

在当前界面中勾选微库,必选项

编译代码,如果没有错误就可以进行下一步了


将下载好的Liteos老版本源码,拷贝到项目中

在项目中,arch文件夹下添加Liteos相关源码


添加后如图:

kernel 需要添加的文件比较多:
los_init.c
base/core 下面全部 .c 文件
base/ipc 下面全部 .c 文件
base/mem/bestfit_little 下面全部 .c 文件
base/mem/common 下面全部 .c 文件
base/mem/membox 下面全部 .c 文件
base/misc 下面全部 .c 文件
base/om 下面全部 .c 文件
extended/tickless 下面全部 .c 文件(如果没有使用 tickless,可以不必添加)

添加完成后如图:

OS_CONFIG可以选择性的添加,我添加的目的是为了修改方便

文件添加完成后还需要将用到的源文件的所有目录添加到项目中,否则在编译时会提示找不到源文件等错误。

任务创建测试:将如下代码复制到main.c文件中,然后编辑

#include "stm32f10x.h"#include "los_sys.h"
#include "los_task.ph"
#include "los_memory.ph"static void Led1Task(void)
{while(1) {//LED1_ON();LOS_TaskDelay(1000);//LED1_OFF();LOS_TaskDelay(1000);}
}
static void Led2Task(void)
{while(1) {//LED2_ON();LOS_TaskDelay(200);//LED2_OFF();LOS_TaskDelay(200);}
}
UINT32 RX_Task_Handle;
UINT32 TX_Task_Handle;
static UINT32 AppTaskCreate(void)
{UINT32 uwRet = LOS_OK;TSK_INIT_PARAM_S task_init_param;task_init_param.usTaskPrio = 4;task_init_param.pcName = "RxTask";task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)Led1Task;task_init_param.uwStackSize = 512;uwRet = LOS_TaskCreate(&RX_Task_Handle, &task_init_param);if (uwRet != LOS_OK){//printf("Led1Task create failed,%X\n",uwRet);return uwRet;}task_init_param.usTaskPrio = 4;task_init_param.pcName = "TxTask";task_init_param.pfnTaskEntry = (TSK_ENTRY_FUNC)Led2Task;task_init_param.uwStackSize = 512;uwRet = LOS_TaskCreate(&TX_Task_Handle, &task_init_param);if (uwRet != LOS_OK){//printf("Led2Task create failed,%X\n",uwRet);return uwRet;} return LOS_OK;
}int main(void)
{/* USER CODE BEGIN 1 */UINT32 uwRet = LOS_OK;LOS_KernelInit();uwRet = AppTaskCreate();if(uwRet != LOS_OK) {//printf("LOS Creat task failed\r\n");}LOS_Start();while (1){}
}

添加完成后编辑即可,如果遇到online错误,只需要将报错的地方将online删除即可。

LiteOS移植到STM32F103系列单片机,非常简单相关推荐

  1. stm32单片机实现多个闹钟_基于STM32F103系列单片机的11个定时器解析

    STM32F103系列的单片机一共有11个定时器,其中: 2个高级定时器 4个普通定时器 2个基本定时器 2个看门狗定时器 1个系统嘀嗒定时器 除去看门狗定时器和系统滴答定时器的八个定时器列表; 8个 ...

  2. 各系列单片机的简单特点介绍及了解

    8051机型 MCS-51系列单片机 MCS是Intel公司生产的单片机的系列符号,而MCS-51系列就是在MCS-48的基础上延展而来 MCS包含基本型和增强型两类产品 基本型 典型产品:8031. ...

  3. STM32F103系列单片机学习笔记1方便以后查看

    系统中断管理:NVIC 我的理解--管理系统内部的中断,负责打开和关闭中断. 基础应用 1,中断的初始化函数,包括设置中断向量表位置,和开启所需的中断两部分.所 有程序中必须的. 用法: void N ...

  4. (过程超详细)适合新手的ATK-ESP8266+STM32F103系列单片机通过MQTT协议直连阿里云的教程

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.所用到的硬件设备 二.调试步骤 1.固件的烧录 2.创造阿里云的产品 3.代码修改 4.最终的硬件连接及效果图 总 ...

  5. 对于初学者有关STM32F103系列单片机选择的建议

    这篇博客是针对于初学者选择STM32单片机的一些经济实惠的建议. STM32F1系列的单片机采用的是M3内核的,而STM32F4系列的采用的是M4内核的,相对来说M4内核的性能强于M3内核一些的,且其 ...

  6. 基于STM32F103系列单片机四路定时器电机编码器模式配置过程附源码

    这篇文章记录了当时在实习期间做了一个四驱的移动平台,通过四路PWM控制电机转速,8个IO口控制电机方向,然后通过与电机同轴的编码器反馈转速,从而实现电机的闭环PID控制方法. 本文用的是基于STM32 ...

  7. STM32F103系列单片机的FLASH和RAM大小

    STM32F103C8T6 CPU:STM32F103RCT6,LQFP64,FLASH:64KB,RAM:20KB flash起始地址为0x8000000,大小为0x10000(16进制)-> ...

  8. 操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统...

    SAST weekly 是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普.研究前沿热点介绍.科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注!欢迎愿意分享 ...

  9. STM32f103系列和f107系列移植

    文章目录 前言 购买F107 一.F103和F107的区别 二.F107的内部资源 三.关于F103和F107的时钟 四.启动文件 五.移植F103工程为F107工程 1.拷贝一个F103的工程 2. ...

最新文章

  1. TCP性能和发送接收Buffer的关系
  2. python怎么查看代码错误_python中的错误如何查看
  3. Java面试题及答案2020,mysql时间类型以及获取当前时间
  4. centos6.4下安装配置JDK+TOMCAT+MYSQL笔记
  5. 将某个网站嵌入到iframe的测试
  6. myqsl cluster error code 2310
  7. REVERSE-PRACTICE-CTFSHOW-5
  8. Linux strtol将十六进制转化为十进制
  9. 淘宝直播在智能互动领域的探索及落地
  10. HTML标签的分类与特点
  11. 【实践】微博推荐算法实践与机器学习平台演进.pdf(附PPT下载链接)
  12. 《Android Property
  13. UIView 不规则剪裁
  14. JFlow:真心服务中国IT产业
  15. 世界上最好用的FTP服务器管理工具
  16. h5 php 拍照上传图片,H5拍照、选择图片上传组件核心
  17. 创业公司如何应对大公司的冲击
  18. 我奋斗了18年才能和你坐在一起喝咖啡
  19. 什么才是社交APP该有的样子
  20. USB虚拟化和虚拟桌面USB重定向

热门文章

  1. Python题目:学生信息管理系统
  2. 《轩辕剑之天之痕》开创周播新模式 明星阵容俘获众多年轻观众
  3. 参观益力多公司活动总结
  4. 江西 南昌 富士康 java,洪城时刻|总投资达110亿!富士康智能科技小镇落户小蓝经开区!...
  5. 巨头纷纷布局分布式云,一场新的云战争即将打响
  6. 2017年度计划中期自我反省
  7. SQL Server2019完整安装流程
  8. Android开发岗还不会这些问题,面试建议
  9. arduino安装第三方开发板库文件
  10. 「聊天宝」体验记录,生朋友聊天