UCOS学习(二)移植UCOSIII到STM32F103RC

准备学习UCOS,大致了解了下UCOSIII,相比起UCOSII,UCOSIII增添了时间轮转调度任务的优势,目前对这个操作系统还是小白一个,打算接下来参照野火的UCOSIII学习应用指南对UCOSIII做一个初步的学习,每次学习完就编辑一篇博客做个学习记录吧。

今天首先尝试了将UCOSIII移植到手上的开发板STM32F103RC,下面对移植过程做一个简单的记录和总结:

1、从UCOS官网上下载UCOSIII源码以及移植到STM32F107的例程代码

2、新建一个103的库函数版本的空工程做移植用

3、在工程的文件夹下新建以下文件夹

 

4、从UCOSIII源码中拷贝上述文件夹对应的文件到工程的文件夹中,uC_CPU等文件夹也一样

5、用MDK5打开工程 ,新建对应的Group并将相应的文件添加进去

 

 

6、点击魔术棒,将各个头文件所在的路径都添加进去 

7、将原有的main.c文件删除,因为app.c文件中已经有一个main函数了

8、 编译工程,会发现有错误,原因是源码中使用的头文件是#include  <stm32f10x_lib.h>,将其改成我们使用的库函数头文件#include <stm32f10x.h>

9、将bsp.c中的BSP_Init函数的内容删掉(因为我并没有使用BSP部分函数),在里面添加自己写的外设初始化函数,如LED_Init,将该文件中没有用到的函数都删掉

10、找到启动文件startup_stm32f10x_hd.s,找到PendSV_Handler和SYSTick_Handler分贝修改成OS_CPU_PendSVHandler和OS_CPU_SysTickHandler

 

10、编译后没有错误基本就移植成功了

 

对于UCOSIII操作系统来说,时钟节拍是整个系统的心脏,任务的调度切换等等都依赖于这个心脏,因此操作系统的时基很重要,系统根据时钟节拍以固定的频率产生中断,在中断中处理与时间相关的事件。在STM32中通常使用SysTick时钟产生操作系统的时钟节拍。

操作系统的时钟节拍频率在"os_cfg_app.h"中设置“OS_CFG_TICK_RATE_HZ”,频率越高,则任务的实时性也越强。STM32F103 的库函数中有提供支持UCOS的操作,查看delay.c文件可以发现是否支持UCOS由一个宏变量SYSTEM_SUPPORT_OS决定,这个变量在sys.h中定义,如果为1则表示支持,0表示不支持。当定义为1时,delay.c中也会支持对应的与OS有关的操作函数delay_osschedlock、delay_osschedunlock、delay_ostimedly、SysTick_Handler等

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值