STM32F103C8T6基于HAL库移植uC/OS-III

主要介绍UCOSIII嵌入式操作系统,并实操STM32F103C8T6基于HAL库移植uC/OS-III的操作过程以及使用逻辑分析仪抓取波形进行协议分析

(一)、题目要求

        学习嵌入式实时操作系统(RTOS),以uc/OS-III为例,将其移植到stm32F103上,构建至少3个任务(task):其中两个task分别以1s和3s周期对LED等进行点亮-熄灭的控制;另外一个task以2s周期通过串口发送“hello uc/OS! 欢迎来到RTOS多任务环境!”。记录详细的移植过程。

(二)、UCOSIII介绍

        µC/OS/III是一个实时操作系统,也就是 RTOS(Real Time Operating System)。操作系统最直观的特点就体现在,操作系统能够使得一个 CPU 核心“同时运行”多个任务,这个特性就被称为“多任务”。然而,实际上,一个 CPU 核心在某一时刻只能运行一个任务,而操作系统中任务调度器的责任就是决定在某一时刻 CPU 究竟要运行哪一个任务,任务调度器使得 CPU 在各个任务之间来回切换并处理任务,由于切换处理任务的速度非常快,因此给人造成了一种同一时刻有多个任务同时运行的错觉。
  操作系统的分类方式可以由任务调度器的工作方式决定,比如有的操作系统给每个任务分配同样的运行时间,时间到了就切换到下一个任务,Unix 操作系统就是这样的。RTOS 的任务调度器被设计为可预测的,而这正是嵌入式实时操作系统所需要的。在实时环境中,要求操作系统必须实时地对某一个事件做出响应,因此任务调度器的行为必须是可预测的。像 µC/OS-III这种传统的 RTOS 类操作系统是由用户给每个任务分配一个任务优先级,任务调度器就可以根据此优先级来决定下一刻应该运行哪个任务。

µC/OS/III特点

        抢占式多任务管理:µC/OS-III 是一个支持多任务抢占的内核,因此总是优先执行任务优先级高的任务。
时间片调度:µC/OS-III 允许系统中有多个相同任务优先级的任务,如果系统中处于就绪状态的任务中,优先级最高的任务有多个,那么 µC/OS-III 将以时间片的方式调度任务,即根据用户指定的时间(时间片)轮流调度这些任务。
极短的中断禁用时间:µC/OS-III 通过锁定任务调度器代替禁用中断来保护一些关键区域
(临界区),这确保了 µC/OS-III 能够快速地响应中断。
任务数量不限:µC/OS-III 理论上支持不受限制的任务数量,但实际上,系统中任务的最大数量受处理器内存空间的限制。
任务优先级数量不限:µC/OS-III 支持的任务优先级数量不受限制,但对于大多数应用场景而言,使用 32~256 个任务优先级就绰绰有余了。
内核对象数量不限:µC/OS-III 提供了多种内核对象,如任务、信号量、事件标志、消息队列、软件定时器和内存区等,并且在不考虑处理器内存限制的情况下,用户可以无限制的创建这些内核对象。
时间戳:µC/OS-III 提供了时间戳功能,用户可以非常方便地测量系统在运行过程中,处理器处理某些事件所消耗的时间,以方便用户对系统进行针对性的优化。
自定义钩子函数:µC/OS-III 提供了一些在内核执行操作之前、之后或过程中的钩子函数,这样可以方便用户扩展 µC/OS-III 的功能。
防死锁:µC/OS-III 允许任务在等待某些内核对象前,设置一个等待的最大超时时间,这样可以有效地防止死锁的发生。
软件定时器:在 µC/OS-III 中,用户可以创建任意数量的“单次”和“周期”软件定时器,并且每个软件定时器都可以有独立的超时回调函数。
任务内嵌信号量:µC/OS-III 提供了任务的内嵌信号量功能,这使得任务可以直接获取来自其他任务或中断的信号,而不需要任何的中间内核对象,大大地提高了系统的运行效率。
任务内嵌消息队列:µC/OS-III 提供了任务的内嵌消息队列,这使得任务可以直接接收来自其他任务或中断的消息,而不需要任何的中间内核对象,大大地提高了系统的运行效率。
 

(三)、实验过程

        以uc/OS-III为例,将其移植到stm32F103上,构建至少3个任务(task)
下面进行实操:

1、建立CubeMX工程

打开stm32CubeMX,选择芯片stm32F103,构建工程。

配置RCC

配置SYS

 串口配置USART1

设置PA3 PC13作为两个LED灯的端口
将与LED相连的两个端口PA3 PC13配置为GPIO_Output,可根据LED现象作为是否移植成功的依据。

 设置好路径,导出keil工程文件即可。

2、获取uCOS-III源码

ucosiii下载:

可直接下载此网盘链接内容
链接:百度网盘 请输入提取码
提取码:1234

3、移植前的文件准备

打开下载的源码

将uCOS的5个相关文件复制到cubeMX工程的MDK-ARM文件夹下

4、移植过程

打开cubeMX生成的keil文件

将uCOS文件添加到项目中

点击Manage Project Items,按下图所示操作,为项目新建文件夹,在对应文件夹下添加文件。

MDK-ARM\uC-CPU路径下选中以下文件,MDK-ARM\uC-CPU\ARM-Cortex-M3\RealView路径下选中以下文件,Add添加.

 点击LIB–>Add Files…
MDK-ARM\uC-LIB路径下选中下图红框文件,Add添加
MDK-ARM\uC-LIB\Ports\ARM-Cortex-M3\RealView路径下选

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值