STM32F103ZET6_移植uC/OS_HAL

1下载源码

网址

GitHub - weston-embedded/uC-OS2: µC/OS-II is a preemptive, highly portable, and scalable real-time kernels. Designed for ease of use on a huge number of CPU architectures.

需要下载三个文件

1看你使用是ucos2还是3(第一个文件)

2第二个文件

3第三个文件

文件意思

|   |-- cpu/             # CPU相关代码,通常包含特定架构的移植文件

|   |-- os/              # μC/OS-II的核心源代码
Cfg配置文件
Ports接口连接文件
Source核心文件


|   |-- lib/             # 库文件,可能包含第三方库或通用功能实现

官网也可以下载官网下载的慢

但比较集中下载方便(好找)(内部参数官方会改好)

我的主页有官方的资源,要一积分才能下载

以积分没有的化可以在评论区把邮箱写如并说要什么资源,我免费发给你们

μC/OS-II/
|
|-- Documentation/       # 文档目录,包含μC/OS-II的手册和参考资料
|
|-- Source/              # 源代码目录
|   |-- cpu/             # CPU相关代码,通常包含特定架构的移植文件
|   |   |-- arm-cortex-m/ # Cortex-M系列处理器的特定代码
|   |   |   |-- common/  # 通用代码,如中断和上下文切换
|   |   |   |-- gcc/     # GNU编译器集合(GCC)相关的编译文件
|   |   |   |-- iar/     # IAR编译器相关的编译文件
|   |   |   |-- keil/    # Keil编译器相关的编译文件
|   |   |   |-- ucosii.c # Cortex-M架构的主要移植文件
|   |   |   |-- ucosii.h # Cortex-M架构的主要头文件
|   |
|   |-- os/              # μC/OS-II的核心源代码
|   |   |-- core/        # 核心功能,如任务管理、时间管理等
|   |   |-- portable/    # 可移植层,包含与硬件无关的代码
|   |   |-- shell/       # 命令行外壳(如果支持)
|   |   |-- source/      # 核心源文件
|   |   |-- ucos_ii.c    # μC/OS-II的主要实现文件
|   |   |-- ucos_ii.h    # μC/OS-II的主要头文件
|   |
|   |-- board/           # 板级支持包(BSP),包含特定硬件平台的初始化代码
|   |   |-- stm32f1xx/   # STM32F1系列微控制器的BSP
|   |   |-- stm32f4xx/   # STM32F4系列微控制器的BSP
|   |   |-- ...          # 其他可能的BSP
|   |
|   |-- lib/             # 库文件,可能包含第三方库或通用功能实现
|   |
|   |-- test/            # 测试代码和应用程序示例
|   |
|   |-- Makefile         # 用于编译工程的Makefile文件
|
|-- Examples/            # 示例工程目录,包含针对不同硬件平台的示例项目
|   |-- stm32f103/       # 针对STM32F103系列微控制器的示例项目
|   |-- stm32f429/       # 针对STM32F429系列微控制器的示例项目
|   |-- ...              # 其他可能的示例项目
|
|-- Include/             # 头文件目录,包含所有公共的头文件
|   |-- cpu/             # CPU相关的头文件
|   |-- os/              # μC/OS-II核心的头文件
|   |-- board/           # BSP相关的头文件
|   |-- lib/             # 库相关的头文件
|
|-- Tools/               # 工具和脚本目录,可能包含用于配置或生成代码的工具
|
|-- License.txt          # μC/OS-II的许可证文件
|
|-- Readme.txt           # 有关μC/OS-II的简要信息和安装指南

2实现移植(以官网下载的为例)

1建立基本项目(实现LED的点亮uCOS实现)

1配置时钟和调试接口

2配置gpio(以实现创建任务实现LED)

3创建项目

2移植ucos代码

1在klie5的项目中创建6个分组

对应的下五个文件(ucosiii才分了两个)

注意

cpu的文件中app.和app.h文件可以不用导入进去它们可以用main.h文件代替

main.h文件格局项目例程的app.c更改

2开始为五个分组导入文件

2.1

将ucos文件放入项目文件中

(app.c  app.h可以不添加)(我添加了但没写只添加了头文件如图)

2.2导入bsp文件在导入路径后面我就不把路径的截图放进去了请自己添加

2.3导入cpu 文件

2.4导入第三方库LIB

2.5导入ucos的文件

2.6导入配置文件

注意

文件在下图的选中的文件内下图上面两个不是

修改文件

1找到图中的文件双击

2再到下列代码

代码前

代码后

代码前

代码后

3在main.c中添加头文件并创建任务运行即可

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2024 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "gpio.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include <includes.h>
/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */

/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/

/* USER CODE BEGIN PV */
//任务控制块
static  OS_TCB   AppTaskStartTCB;

//任务堆栈
static  CPU_STK  AppTaskStartStk[APP_TASK_START_STK_SIZE];

/* 私有函数原形 --------------------------------------------------------------*/
static  void  AppTaskStart(void *p_arg);
/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{

  /* USER CODE BEGIN 1 */
	OS_ERR  err;
  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */
	OSInit(&err);
  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
 // MX_GPIO_Init();
  /* USER CODE BEGIN 2 */
  
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
                                                                                  
	/* 创建任务 */
	OSTaskCreate((OS_TCB     *)&AppTaskStartTCB,                /* Create the start task                                */
				 (CPU_CHAR   *)"App Task Start",
				 (OS_TASK_PTR ) AppTaskStart,
				 (void       *) 0,
				 (OS_PRIO     ) APP_TASK_START_PRIO,
				 (CPU_STK    *)&AppTaskStartStk[0],
				 (CPU_STK_SIZE) APP_TASK_START_STK_SIZE / 10,
				 (CPU_STK_SIZE) APP_TASK_START_STK_SIZE,
				 (OS_MSG_QTY  ) 0,
				 (OS_TICK     ) 0,
				 (void       *) 0,
				 (OS_OPT      )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
				 (OS_ERR     *)&err);

				 
				 
	/* 启动多任务系统,控制权交给uC/OS-III */
	OSStart(&err);            /* Start multitasking (i.e. give control to uC/OS-III). */
               
}

/**
  * 函数功能: 启动任务函数体。
  * 输入参数: p_arg 是在创建该任务时传递的形参
  * 返 回 值: 无
  * 说    明:无
  */
static  void  AppTaskStart (void *p_arg)
{
  OS_ERR      err;

  BSP_Init();                                                 /* Initialize BSP functions                             */
  CPU_Init();//必须添加也可以写在创建任务之前
  while (1)
  {
	  
		HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1);
		OSTimeDlyHMSM(0, 0, 3, 0,
                  OS_OPT_TIME_HMSM_STRICT,
                  &err);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  {
    Error_Handler();
  }
}

/* USER CODE END 4 */

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  __disable_irq();
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

总结

如果使用GitHub要修改配置文件

使用官网的官方已经修改好了

导入时要注意路径是否正确

有问题评论区见

最终的项目可在资源中找到

本项目重点讲解如何配置和导入ucos文件,创建任务的过程有点不严谨

任务的创建后续会讲解

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: stm32f103zet6_lua.rar 是一个压缩文件,其中包含了使用Lua编程语言编写的基于STM32F103ZET6系列微控制器的软件开发包。STM32F103ZET6是STMicroelectronics推出的一款高性能、低功耗的Cortex-M3内核微控制器。 这个软件开发包提供了一系列的函数库和例程,方便开发者使用Lua语言进行STM32F103ZET6的应用程序开发。通过这个软件开发包,开发者可以使用Lua语言轻松地编写嵌入式应用程序,实现各种功能,如IO控制、定时器控制、串口通信等。 对于开发者来说,使用Lua语言进行嵌入式开发具有许多优点。首先,Lua语言具有简洁、易学、易读的特点,使得开发者能够迅速上手并快速开发出功能强大的应用程序。其次,使用Lua语言进行嵌入式开发可以避免C/C++语言的繁琐和复杂性,减少开发难度。 此外,stm32f103zet6_lua.rar还提供了示例代码,为开发者提供了学习和参考的资源。开发者可以根据自己的需求,借鉴示例代码并进行适当的修改,加快开发进度。 总之,stm32f103zet6_lua.rar是一个针对STM32F103ZET6微控制器的Lua软件开发包,方便开发者使用Lua语言进行嵌入式应用程序的开发。使用这个软件开发包可以加快开发进度、降低开发难度,并且具有丰富的示例代码供开发者学习和参考。 ### 回答2: stm32f103zet6_lua.rar 是一个压缩文件,其中包含了与 STM32F103ZET6 微控制器相关的 Lua 脚本。 STM32F103ZET6 是意法半导体公司研发的一款32位 ARM Cortex-M3 内核的微控制器。它具有高性能、低功耗和丰富的外设。这款微控制器被广泛应用于嵌入式系统开发领域。 Lua 是一种轻量级的脚本语言,非常适合嵌入式系统的开发。它具有简洁、灵活和易于学习的特点,被广泛应用于游戏开发、嵌入式系统、脚本编程等领域。在嵌入式系统中使用 Lua 可以简化开发流程,提高开发效率。 stm32f103zet6_lua.rar 中的 Lua 脚本可能包含了与 STM32F103ZET6 微控制器配套的功能模块、驱动程序、例程等。使用这些脚本可以快速搭建基于 STM32F103ZET6 的嵌入式系统,加快开发进度。 需要注意的是,使用 stm32f103zet6_lua.rar 需要一定的嵌入式系统开发经验和相关设备、工具的支持。在使用前,建议详细阅读相关的文档和使用手册,熟悉 Lua 编程语言和 STM32F103ZET6 微控制器的特性。 ### 回答3: "stm32f103zet6_lua.rar" 是一个文件的名称,其中的 "stm32f103zet6" 是指微控制器型号为 STM32F103ZET6,"lua" 则表示这个文件与 Lua 编程语言有关。 STM32F103ZET6 是意法半导体(STMicroelectronics)推出的一款高性能 ARM Cortex-M3 内核微控制器,该型号在 STM32F103 系列中属于高端型号。它具有丰富的外设接口和较大的存储空间,适合于各种嵌入式应用。通过该型号的引脚配置(ZET6),我们可以了解到具体的引脚分布和功能。 而 ".rar" 后缀则表示这是一个压缩文件,可能包含了与 STM32F103ZET6 相关的一些资料或者代码。从文件名中的 "lua" 可以推测出,压缩文件中可能有关于 Lua 编程语言的代码和相关资源。 Lua 是一种轻量级的脚本语言,易于学习和使用。它可以被嵌入到其他软件中作为扩展语言使用,或者独立运行。Lua 在嵌入式系统中得到广泛应用,包括在 STM32 微控制器中。可能这个压缩文件中包含了与 STM32F103ZET6 微控制器配合使用的 Lua 代码、库文件或其他有用的资源。 总结来说,"stm32f103zet6_lua.rar" 这个文件名指的是一个压缩文件,其中可能包含了 STM32F103ZET6 微控制器相关的 Lua 代码和资源。这个文件可能对于使用该型号的微控制器进行开发和编程是有用的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值