一、uc/OS原理
uc/OS是一个小型的嵌入式实时操作系统。特点简洁、高效,特别适合于微控制器环境。uC/OS的核心是一个抢占式多任务内核,它支持任务的优先级调度。
在uC/OS中,每个任务都被赋予一个优先级,系统根据任务的优先级来决定哪个任务应该运行。它使用了一种基于优先级的抢占式调度策略,高优先级的任务可以打断低优先级的任务。
uC/OS提供了时间管理服务,包括延时和定时器功能。任务可以通过系统提供的函数进行延时,或者设置定时器以在未来的某个时间点执行特定操作。
任务间通信与同步:为了在任务之间进行有效的通信,uC/OS提供了多种机制,如信号量、互斥量和消息队列。这些机制可以用来同步对共享资源的访问,以及在不同任务之间传递数据。
内存管理:uC/OS提供了一个动态内存分配方案,允许任务在运行时动态地请求和释放内存。这有助于减少内存的浪费,并提高系统的灵活性。
中断管理:中断管理是嵌入式系统的一个重要方面,uC/OS通过快速中断处理机制来响应中断,并且提供了能够在中断服务例程(ISR)中使用的系统调用。
二、获取uC/OS-III源码
进入 Micrium 公司官网下载中心:http://micrium.com/downloadcenter/
找到源码后下载,打开后有四个文件夹:
三、建立STM32CubeMX工程
RCC:
SYS:
GPIO:
USART:
Project Manager:
四、将uC/OS-III文件复制到工程文件夹
新建一个 UCOSIII 的文件夹,将下载的Uc-CPU、 uC-LIB、 Ucos-III 复制到新建的文件夹中:
在Src文件夹下新建一个OS文件夹,将下载的源码中的文件app.c 、 app_cfg.h 、 cpu_cfg.h 、 includes.h 、 lib_cfg.h 、 os_app_hooks.c 、os_app_hook.h、os_cfg.h、os_cfg_app.h复制到该OS文件夹中:
新建三个空白文件: bsp.c、bsp.h、app.h
:
四、添加工程组件
添加分组:
将Src/OS
中的bsp.c
和 bsp.h
文件添加至 bsp
组中,将 app.c
添加进 Application/User/Core
组中。
将UCOSIII/uC-CPU
中的cpu_core.c
、cpu_core.h
、cpu_def.h
添加进uCOSIII_CPU
组中,同时将UCOSIII/uC-CPU/ARM-Cortex-M3/RealView
中的三个文件添加到该组。
将UCOSIII/uC-LIB
中的9个文件添加到uCOSIII-LIB
组中,同时将UCOSIII/uC-LIB/Ports/ARM-Cortex-M3/Realview
中的lib_mem_a.asm
添加到该组中。
将UCOSIII/UcosIII/Ports/ARM-Cortex-M3/Generic/RealView
中的3个文件添加的uCOSIII_Ports
组中。
将UCOSIII/UcosIII/Source
中的20个文件添加到uCOSIII_Source
组中。
将Core/Src/OS
中的以下图中的8个文件添加到OS_cfg
组中。
例:
五、添加头文件路径
六、修改代码
参考博客修改代码:
STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程_ostimedlyhmsm(0,0,0,800);-CSDN博客
最后运行成功: