ucOS-III多任务程序

一、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/
找到源码后下载,打开后有四个文件夹:
![[Pasted image 20240614182555.png]]

三、建立STM32CubeMX工程

RCC:
![[Pasted image 20240614183123.png]]

SYS:
![[Pasted image 20240614183242.png]]

GPIO:
![[Pasted image 20240614183407.png]]

USART:
![[Pasted image 20240614183552.png]]

Project Manager:
![[Pasted image 20240614183713.png]]

四、将uC/OS-III文件复制到工程文件夹

新建一个 UCOSIII 的文件夹,将下载的Uc-CPU、 uC-LIB、 Ucos-III 复制到新建的文件夹中:
![[Pasted image 20240614184522.png]]

在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文件夹中:
![[Pasted image 20240614185151.png]]

新建三个空白文件: bsp.c、bsp.h、app.h:
![[Pasted image 20240614185411.png]]

四、添加工程组件

添加分组:
在这里插入图片描述

Src/OS中的bsp.cbsp.h文件添加至 bsp 组中,将 app.c 添加进 Application/User/Core 组中。
UCOSIII/uC-CPU中的cpu_core.ccpu_core.hcpu_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组中。
例:
![[Pasted image 20240614191524.png]]

五、添加头文件路径

![[Pasted image 20240614191958.png]]

六、修改代码

参考博客修改代码:
STM32F103C8T6移植uC/OS-III基于HAL库超完整详细过程_ostimedlyhmsm(0,0,0,800);-CSDN博客
最后运行成功:
![[Pasted image 20240614193741.png]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值