STM32F103C8T6基于HAL库移植uCOS

目录使用 CubeMX 建立 STM32F103 HAL 库工程5 为 HAL 库工程移植文件5.1 为 HAL 工程配置 uCOS 相关文件将 uCOS 相关文件添加到项目实现三个任务运行【进阶】1 目标要求总结1 uC/OS-III 多任务系统简介 uC/OS 是 Micrium 公司出品的 RTOS 类实时操作系统,uC/OS 目前有两个版本:uC/OS-II 和 uC/OS-III。 uC/OS-III 是一个可裁剪、可剥夺型的多任务内核,而且没...
摘要由CSDN通过智能技术生成

 

目录

使用 CubeMX 建立 STM32F103 HAL 库工程

5 为 HAL 库工程移植文件

5.1 为 HAL 工程配置 uCOS 相关文件

将 uCOS 相关文件添加到项目

 实现三个任务运行【进阶】1 目标要求

总结


1 uC/OS-III 多任务系统简介

    uC/OS 是 Micrium 公司出品的 RTOS 类实时操作系统,uC/OS 目前有两个版本:uC/OS-II 和 uC/OS-III。
    uC/OS-III 是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。
    uC/OS-III 提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。
    uC/OS-III 是用 C 和汇编来写的,其中绝大部分都是用 C 语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的, uC/OS-III 结构简洁,可读性很强!

    uC/OS-III 任务管理
    ① uC/OS-III 创建任务。
    创建任务就是将任务控制块、任务堆栈、任务代码等联系在一起,并且初始化任务控制块的相应字段。在 uC/OS-III 中通过函数 OSTaskCreate() 来创建任务。
    ② uC/OS-III 任务删除。
    OSTaskDel() 函数用来删除任务,当一个任务不需要运行的话,我们就可以将其删除掉,删除任务不是说删除任务代码,而是 uC/OS-III 不再管理这个任务。
    ③ uC/OS-III 任务挂起。
    有时候有些任务因为某些原因需要暂停运行,但是以后还要运行,因此就不能删除掉任务,这里可以使用 OSTaskSuspend() 函数挂起这个任务,以后再恢复运行。
    ④ uC/OS-III 任务恢复。
    OSTaskResume() 函数用来恢复被 OSTaskSuspend() 函数挂起的任务, OSTaskResume() 函数是唯一能恢复被挂起任务的函数。
    ⑤ uC/OS-III 时钟片轮转调度。
    uC/OS-III 是支持多个任务拥有同一个优先级的,这些任务采用时间片轮转调度方法进行任务调度。在 os_cfg.h 文件中有个宏 OS_CFG_SCHED_ROUND_ROBIN_EN,使用时间片轮转调度就需要将 OS_CFG_SCHED_ROUND_ROBIN_EN 定义为 1 ,这样 uC/OS-III 中有关时间片轮转调度的代码才会被编译,否则不能使用时间片轮转调度。

2 准备 uC/OS-III 源码

    官网下载:http://micrium.com/downloadcenter/
    官网下载比较麻烦,这里提供网盘链接,可直接下载。
    百度网盘下载
    链接:https://pan.baidu.com/s/1bz15YwXgSfqO1cnelcAcZA
    提取码:luha

3 准备项目文件

    新建文件夹
    下载好 uC/OS-III 源码文件之后,在下面所示的文件夹里新建两个文件夹 uC-BSP 和 uC-CONFIG,方便后面使用。

为 uC-BSP 文件夹添加文件
在 uC-BSP 文件夹中新建 bsp.c 和 bsp.h 空文件,等之后再用 

 

为 uC-CONFIG 文件夹添加文件
将“Micrium\Software\EvalBoards\Micrium\uC-Eval-STM32F107\uCOS-III”文件路径里框住的文件(共 8 个)全部复制到刚才新建的 uC-CONFIG 文件夹,app.c 里是 main 函数。

 

 

使用 CubeMX 建立 STM32F103 HAL 库工程

这里选择的芯片是 STM32F103C8T6。

 配置 SYS

 配置引脚
设置 PC13 引脚为 GPIO_Output 来点亮 LED 灯。

配置串口 USART1 

命名工程文件并设置
这里我命名为“ uC ” 

 在 main.c 文件的 while 循环里添加下面代码

while (1)
  {
    /* USER CODE END WHILE */
    
    /* USER CODE BEGIN 3 */
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
		HAL_Delay(500);
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
		HAL_Delay(500);
  }
  • 编译烧录后,可以发现 PC13 引脚的 LED 灯闪烁,说明代码没有问题。

5 为 HAL 库工程移植文件

5.1 为 HAL 工程配置 uCOS 相关文件

  • 将 uCOS 相关文件(共 5 个)复制到 HAL 工程的 MDK-ARM 文件夹下。

 

将 uCOS 相关文件添加到项目

  • 打开 keil5 工程,点击 Manage Project Items 添加项目

 

 为上面新建的项目分别添加文件
① 点击 CPU –> Add Files…,按照如下方式,选中 4.1 部分中添加的 uC-CPU 中的文件(共 6 个),最后点击 Add

 

 依次操作同上,注意细心

 记得最后点击 OK 保存关闭

效果如下:

按照如下依次导入文件路径 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值