LiteOS移植到STM32F103系列单片机,非常简单
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
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系列单片机,非常简单相关推荐
- stm32单片机实现多个闹钟_基于STM32F103系列单片机的11个定时器解析
STM32F103系列的单片机一共有11个定时器,其中: 2个高级定时器 4个普通定时器 2个基本定时器 2个看门狗定时器 1个系统嘀嗒定时器 除去看门狗定时器和系统滴答定时器的八个定时器列表; 8个 ...
- 各系列单片机的简单特点介绍及了解
8051机型 MCS-51系列单片机 MCS是Intel公司生产的单片机的系列符号,而MCS-51系列就是在MCS-48的基础上延展而来 MCS包含基本型和增强型两类产品 基本型 典型产品:8031. ...
- STM32F103系列单片机学习笔记1方便以后查看
系统中断管理:NVIC 我的理解--管理系统内部的中断,负责打开和关闭中断. 基础应用 1,中断的初始化函数,包括设置中断向量表位置,和开启所需的中断两部分.所 有程序中必须的. 用法: void N ...
- (过程超详细)适合新手的ATK-ESP8266+STM32F103系列单片机通过MQTT协议直连阿里云的教程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.所用到的硬件设备 二.调试步骤 1.固件的烧录 2.创造阿里云的产品 3.代码修改 4.最终的硬件连接及效果图 总 ...
- 对于初学者有关STM32F103系列单片机选择的建议
这篇博客是针对于初学者选择STM32单片机的一些经济实惠的建议. STM32F1系列的单片机采用的是M3内核的,而STM32F4系列的采用的是M4内核的,相对来说M4内核的性能强于M3内核一些的,且其 ...
- 基于STM32F103系列单片机四路定时器电机编码器模式配置过程附源码
这篇文章记录了当时在实习期间做了一个四驱的移动平台,通过四路PWM控制电机转速,8个IO口控制电机方向,然后通过与电机同轴的编码器反馈转速,从而实现电机的闭环PID控制方法. 本文用的是基于STM32 ...
- STM32F103系列单片机的FLASH和RAM大小
STM32F103C8T6 CPU:STM32F103RCT6,LQFP64,FLASH:64KB,RAM:20KB flash起始地址为0x8000000,大小为0x10000(16进制)-> ...
- 操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统...
SAST weekly 是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普.研究前沿热点介绍.科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注!欢迎愿意分享 ...
- STM32f103系列和f107系列移植
文章目录 前言 购买F107 一.F103和F107的区别 二.F107的内部资源 三.关于F103和F107的时钟 四.启动文件 五.移植F103工程为F107工程 1.拷贝一个F103的工程 2. ...
最新文章
- TCP性能和发送接收Buffer的关系
- python怎么查看代码错误_python中的错误如何查看
- Java面试题及答案2020,mysql时间类型以及获取当前时间
- centos6.4下安装配置JDK+TOMCAT+MYSQL笔记
- 将某个网站嵌入到iframe的测试
- myqsl cluster error code 2310
- REVERSE-PRACTICE-CTFSHOW-5
- Linux strtol将十六进制转化为十进制
- 淘宝直播在智能互动领域的探索及落地
- HTML标签的分类与特点
- 【实践】微博推荐算法实践与机器学习平台演进.pdf(附PPT下载链接)
- 《Android Property
- UIView 不规则剪裁
- JFlow:真心服务中国IT产业
- 世界上最好用的FTP服务器管理工具
- h5 php 拍照上传图片,H5拍照、选择图片上传组件核心
- 创业公司如何应对大公司的冲击
- 我奋斗了18年才能和你坐在一起喝咖啡
- 什么才是社交APP该有的样子
- USB虚拟化和虚拟桌面USB重定向