2018年1月26日,下午五点四十六,还没有下班,搞了一个下午的移植,终于移植成功,特此记录,走过的坎,或许你们能找到答案。
移植的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。
现象就是两个灯在那里闪啊闪的!=-=