ucos-II(2.86)移植到STM32F103VET6
2018-01-26 18:57
232 查看
2018年1月26日,下午五点四十六,还没有下班,搞了一个下午的移植,终于移植成功,特此记录,走过的坎,或许你们能找到答案。
移植的ucos-II的版本号为2.86,version能在ucos-II.h中找到。
先说一下移植的步骤吧:
1、准备源码(相信这个都不需要说明了吧,自行可以去网上或者micrium官网下载,但是去官网下载需要登录。)
2、建立stm32的工程:能想到玩操作系统的童鞋们肯定对建立工程很熟悉了,所以这两步都是废话。
//由于我建立工程用的是Cube,所以该Demo是用的hal库写的,用std库的一样的写法,就只是函数调用不一样了,和操作系统的调度没有关系。
3、开始移植:先看一下主函数,就这么多东西,能看出来操作系统的方便了吧,哈哈哈哈
![](https://img-blog.csdn.net/20180126175503955?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRWxlX0Rk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20180126175529742?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRWxlX0Rk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
需要的文件
![](https://img-blog.csdn.net/20180126175714988?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRWxlX0Rk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其他的刚才操作的时候忘记了截图,就扔个链接上来吧,这个连接里边讲了一部分,但是还是没有讲到我踩过的坑,等下我会把我踩过的坑单独拿出来划重点。
链接:传送门
因为修改的时候能不动STM32的文件就不要动,所以我们在以下几个地方做出修改,也就是我的坑,但是刚才又看了一下那个兄弟发的教程,发现好像就理解了他的意思,算了,不说了,坑是要踩的,经验是要得来的!!
首先先把stm32f1xx_it.c中的void PendSV_Handler(void)函数注释掉:
![](https://img-blog.csdn.net/20180126180609426?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRWxlX0Rk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在此处我用了条件编译,都是一样的。
然后修改systick中断服务函数,
![](https://img-blog.csdn.net/20180126180752910?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRWxlX0Rk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在这里多提一句,用标准库的小同学们注意了,因为我是用的Cube生成的初始化代码,所以systick已经在时钟初始化函数中已经初始化过了,如果没有初始化的话,需要自行初始化,没了心跳很严重。
最后一个比较重要的地方就是os_cpu_a.asm文件中了,看图自行修改:
![](https://img-blog.csdn.net/20180126181208000?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRWxlX0Rk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20180126181221343?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRWxlX0Rk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20180126181234304?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRWxlX0Rk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
好了,到这里就结束了。其他的代码我来个百度云链接吧,可以参考一下,写的比较low。
百度云
现象就是两个灯在那里闪啊闪的!=-=
移植的ucos-II的版本号为2.86,version能在ucos-II.h中找到。
先说一下移植的步骤吧:
1、准备源码(相信这个都不需要说明了吧,自行可以去网上或者micrium官网下载,但是去官网下载需要登录。)
2、建立stm32的工程:能想到玩操作系统的童鞋们肯定对建立工程很熟悉了,所以这两步都是废话。
//由于我建立工程用的是Cube,所以该Demo是用的hal库写的,用std库的一样的写法,就只是函数调用不一样了,和操作系统的调度没有关系。
3、开始移植:先看一下主函数,就这么多东西,能看出来操作系统的方便了吧,哈哈哈哈
需要的文件
其他的刚才操作的时候忘记了截图,就扔个链接上来吧,这个连接里边讲了一部分,但是还是没有讲到我踩过的坑,等下我会把我踩过的坑单独拿出来划重点。
链接:传送门
因为修改的时候能不动STM32的文件就不要动,所以我们在以下几个地方做出修改,也就是我的坑,但是刚才又看了一下那个兄弟发的教程,发现好像就理解了他的意思,算了,不说了,坑是要踩的,经验是要得来的!!
首先先把stm32f1xx_it.c中的void PendSV_Handler(void)函数注释掉:
在此处我用了条件编译,都是一样的。
然后修改systick中断服务函数,
在这里多提一句,用标准库的小同学们注意了,因为我是用的Cube生成的初始化代码,所以systick已经在时钟初始化函数中已经初始化过了,如果没有初始化的话,需要自行初始化,没了心跳很严重。
最后一个比较重要的地方就是os_cpu_a.asm文件中了,看图自行修改:
好了,到这里就结束了。其他的代码我来个百度云链接吧,可以参考一下,写的比较low。
百度云
现象就是两个灯在那里闪啊闪的!=-=
相关文章推荐
- uCOS-II2.86 移植的一点心得
- STM32F103移植UCOS-II时任务切换问题
- 使用Keil在stm32f103ZET6上移植ucos-ii并利用LED灯测试
- STM32F103系列之移植uCOS-II
- 1.uCOS-II简介及移植uCOS-II到STM32F103平台详细步骤
- 在移植ucos2.86的版本到STM32f103时,遇到的一些疑问
- 移植uCOS-II到Cortex-M3平台
- 移植uCOS-II到C51 - 4
- 移植UCOS-II到ARM7TDMI
- UCOS-II移植ARM的笔记
- ucos_ii的移植
- [置顶] 基于stm32f103zet6之UC/OS_II的学习1(初步移植OS--点灯大法)
- 关于ucos-ii的移植
- uCOS-II在51单片机上的移植
- 在VS2008中移植uCOS-II
- 为什么在ucos向stm32f103移植时说os_cpu_c.c中有三个函数如OS_CPU_SysTickInit()需要注释掉
- 自制处理器OpenMIPS移植ucos-II过程之1——OpenMIPS介绍
- uCOS-II 移植及遇到的问题
- 一步步移植uCOS-II and LwIP (二)
- uCOS-II移植