文章目录
前言
本文介绍了基于STM32F405ZGT× HAL库的uCOSIII移植的详细过程,创建了三个任务,实现了LED闪烁、浮点数计算和串口打印等功能
一、uCOS源码获取
方法一:可以通过官网下载源码,官网链接:
https://www.silabs.com/developers/micrium
提示:在官网下载资源时需要注册账号。我注册的时候总是提示邮箱有误,不知道怎么解决,有了解的小伙伴欢迎把方法发在评论区
方法二:热心网友的分享:
https://download.youkuaiyun.com/download/fhdghfuiahfsdifbs/18909773
源码目录如下:
补充几个UCOS源码下载的相关博客链接:
- https://blog.youkuaiyun.com/DZRYWYBL/article/details/123153091
- https://blog.youkuaiyun.com/weixin_44388614/article/details/121076842
二、HAL工程建立
1.配置SYS,选择Serial Wire
2.配置RCC,选择高速外部时钟
3.配置GPIO(LED)和USART1,通过实现相关功能来测试uCOS移植效果
4.配置完成后,点击“GENERATE CODE”,生成工程代码。生成的keil工程如下
三、移植uCOS
3.1 工程文件夹的文件移植
1.在工程目录下新建文件夹UCOSIII,将源码内的uC-CPU、uC-LIB和uCOS-III这三个文件夹复制粘贴到UCOSIII文件夹下_
2.在UCOSIII目录下创建一个新的文件夹,命名为uCOS-CONFIG。接着,将源代码目录中的八个指定文件复制并粘贴到新创建的uCOS-CONFIG文件夹中。
3.在UCOSIII目录下创建一个新的文件夹,命名为uCOS-BSP,并新建两个空白文件bsp.c和bsp.h
4.在Src和Inc文件夹下分别新建空白文件myucos.c和myucos.h
3.2 keil工程目录文件添加
1.向keil工程中添加如下分组
2.向分组中添加文件(添加.c文件和.asm文件)
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
3.添加头文件路径
3.3 文件修改
1.在bsp.h中添加如下内容
#ifndef __BSP_H__
#define __BSP_H__
#include "stm32f4xx_hal.h"
void BSP_Init(void);
#endif
2.在bsp.c中添加如下内容
#include "includes.h"
#define BSP_REG_DEM_CR (*(CPU_REG32 *)0xE000EDFC) //DEMCR寄存器
#define BSP_REG_DWT_CR (*(CPU_REG32 *)0xE0001000) //DWT控制寄存器
#define BSP_REG_DWT_CYCCNT (*(CPU_REG32 *)0xE0001004) //DWT时钟计数寄存器
#define BSP_REG_DBGMCU_CR (*(CPU_REG32 *)0xE0042004)
//DEMCR寄存器的第24位,如果要使用DWT ETM ITM和TPIU的话DEMCR寄存器的第24位置1
#define BSP_BIT_DEM_CR_TRCENA DEF_BIT_24
//DWTCR寄存器的第0位,当为1的时候使能CYCCNT计数器,使用CYCCNT之前应当先初始化
#define BSP_BIT_DWT_CR_CYCCNTENA DEF_BIT_00
/*
*********************************************************************************************************
* BSP_CPU_ClkFreq()
* Description : Read CPU registers to determine the CPU clock frequency of the chip.
* Argument(s)