STM32CubeMX创建F429 FreeRTOS工程(文末附源码)

1. 打开STM32CubeMX

  • 我使用的是Version 5.5.0
    在这里插入图片描述

2. 根据芯片创建工程

  • 此处我使用的是stm32f429igt6
    在这里插入图片描述
    在这里插入图片描述

3. 配置时钟

  • 选择外部时钟
    在这里插入图片描述
  • 配置时钟树
    在这里插入图片描述

4. 配置串口

在这里插入图片描述

5. 配置LED

在这里插入图片描述

6. 勾选使用RTOS

  • 此处我们选择新版本:CMSIS_V2
    在这里插入图片描述
  • 添加任务
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

7. 生成工程

在这里插入图片描述
在这里插入图片描述

  • 可能出现以下警告:
    在这里插入图片描述

其意思就是,当使用了FreeRtos的时候,强烈建议HAL库使用除了Systick以外的时钟源。也就是说当不使用FreeRtos的时候,HAL使用的是systick作为时钟源,现在使用了rtos,不建议hal库和rtos一起使用systick作为时钟源。

  • 根据软件的建议,使用定时作为HAL库的时钟源:
  • 这里我们使用TIM1作为HAL库的时钟源,点击生成代码时,上边的警告已经不再出现了
    在这里插入图片描述

8. 测试RTOS是否添加成功

8.1 打开MDK工程

在这里插入图片描述

8.2 在freertos.c中添加任务函数
  • 引入头文件
/* USER CODE BEGIN Includes */     
#include "usart.h"
/* USER CODE END Includes */
  • 修改Func1_LED函数
void Func1_LED(void *argument)
{
  /* USER CODE BEGIN Func1_LED */
  /* Infinite loop */
  for(;;)
  {
	HAL_GPIO_WritePin(GPIOH, GPIO_PIN_10, GPIO_PIN_RESET);
	osDelay(100);
	HAL_GPIO_WritePin(GPIOH, GPIO_PIN_10, GPIO_PIN_SET);
	osDelay(100);
  }
  • 修改Func2_USART1函数
void Func2_USART1(void *argument)
{
  /* USER CODE BEGIN Func2_USART1 */
	uint8_t TxData[20]= "usart1 transmit!\n";
  /* Infinite loop */
  for(;;)
  {
	HAL_UART_Transmit(&huart1,TxData,20,0xffff);
    osDelay(500);
  }
  /* USER CODE END Func2_USART1 */
}

在这里插入图片描述

8.3 编译,下载

在这里插入图片描述

  • LED灯正常闪烁,同时串口正常发送
    在这里插入图片描述

移植成功!

CMSIS-RTOS2 API参考:
http://www.keil.com/pack/doc/CMSIS_Dev/RTOS2/html/group__CMSIS__RTOS.html

源码地址:https://download.csdn.net/download/u014779536/12116465

猜你喜欢

转载自blog.csdn.net/u014779536/article/details/104052871