UCOSII在STM32F407上的移植

1、ucosii移植准备工作

1.1准备基础工程:

移植的时候需要一个基础工程,为了方便起见我们就选取跑马灯实验,作为ucossii移植的基础工程。

1.2Ucossii源码:(除非是冷门的芯片,不然可以下载相近的例程代码)

1)Micrium官网下载

2)开发板光盘自带

2、Ucossii移植步骤

1)step1

在基础工程文件夹中先建立UCOSII文件夹,然后在基础工程中UCOSII下建立相应的文件夹:CONFIG、CORE和PORT。

2)step2

向core文件夹中添加文件,

3)step3

向CONFIG文件夹中添加文件,

4)step4

向PORT文件件中添加文件,

5)step5

将Ucosii源码添加到工程中,打开工程,选择

新建三个分组:

往分组里面添加文件,CORE

文件ucosii.c包含了所有其它ucos的源文件, 只需要编译它就可以了, 其它的就不用编译了.
也可以把ucosii.c文件删除.

PORT

CONFIG

结果如下

把头文件路径添加进去,

编译后出现如下错误

app_cfg.h 是用来配置应用 软件的,主要是任务的优先级和堆栈大小,中断优先级等信息。目前还没有基于 ucosii 开发应用软件,所以只需在 include 文件夹中创建一个空的 app_cfg.h 文件即
可,也可以注释掉 。os_cfg.h 是用来配置 ucosii 系统的。

再编译,又有一个错误

这个中断服务函数完成上下文切换,一般都是用汇编来编写的,(正点原子的已经将UCOSii的异常中断函数名称改为和标准库一样的,所以只需注释,别的例程需要将其改为和标准库的异常中断命名一致,滴答定时器的中断处理函数中要调用UCOS的时钟服务程序,即uCOS-ii跟STM32建立联系,使用时要配置、开启滴答时钟。)

OSTimeTick();只是将就绪的任务放入就绪表,OSIntExit()里调用了任务调度函数进行任务调度。即在每次滴答定时器的中断进行了任务调度。

把stm32f4xx_it.c里面的函数注释掉

再编译就没有错误了。

6)step6(使用正点原子例程特有的文件)

修改sys.h文件

再编译会出现错误

再编译,没有错误

因为F4系列会有FPU浮点运算单元:

应该改为

重复定义了,不应该定义去掉__FPU_PRESENT=1

再编译,没有错误,

2.文件作用

1、CONFIG中文件

os_cfg.h文件很重要的一些系统相关的宏定义,主要用于系统的裁剪等。

2)PORT中的文件

注意多参考STM32的参考资料,调试相关的可以不加入工程中。

3)CORE中的文件

4)整个架构

红色部分为整个源码部分,跟CPU无关的,可以设置为只读,防止误改动。

绿色部分与应用程序相关的代码,includes.h包含头文件,os_cfg.h主要用来裁剪系统。

蓝色部分与移植相关的部分

3、测试软件是否移植成功

1)创建一个start_task任务,start任务用来创建其他任务。

2)创建一个led0_task任务,用来控制LED0的亮灭

3)创建一个led1_task任务,用来控制LED1的亮灭

4)创建一个float_task任务,用来测试浮点计算。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值