这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » CMSIS_V2 FreeRTOS工程创建

共3条 1/1 1 跳转至

CMSIS_V2 FreeRTOS工程创建

工程师
2025-05-15 20:12:28     打赏

1、简介

本文将使用CubeMX工具完成CMSIS_V2 FreeRTOS工程的创建,以及参数设置、任务部署和测试案例

2CubeMX设置

使能串口1,用于输出调试信息

)DC)6UZ@HLLCMO863I4SL{5.png

选择FREERTOS库,接口版本为CMSIS_V2

G7PMS3OODL(Z_[81)@F_}]L.png

默认设置中已经初始化了一个任务,现在新增一个任务

9OAH9%W20@T7_$1746J`PS5.png

注意增大堆栈大小,避免可能的堆栈内存溢出

IEMO@R}MI2N6O$1F%PR2T}5.png

最后生成工程,以下Keil工程一览

包含了FreeRTOS的部署、初始化及运行设置

(K`{R68ICF8553OXYV6Y_V7.png

3、任务部署

任务部署的代码放在freertos.c文件

@TJPK7HO9JY43VY2}FS46QY.png

其中任务StartDefaultTask可定义为:

/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{
  /* USER CODE BEGIN StartDefaultTask */
  /* Infinite loop */
  for(;;)
  {
    osDelay(500);
		printf("DefaultTask Runing\n");
  }
  /* USER CODE END StartDefaultTask */
}

表示每500ms,输出DefaultTask Runing字符串一次

任务StartTask02可定义为:

/* USER CODE END Header_StartTask02 */
void StartTask02(void *argument)
{
  /* USER CODE BEGIN StartTask02 */
  /* Infinite loop */
  for(;;)
  {
    osDelay(1500);
		printf("MyTask02k Runing\n");
  }
  /* USER CODE END StartTask02 */
}

表示每1500ms,输出MyTask02k Runing字符串一次

4、实验结果

)NYZADB`GEHJVU5UF5AB30U.png

在时间顺序上,每输出3次字符串DefaultTask Runing后输出一次MyTask02k Runing,基本符合程序设定的执行逻辑。




关键词: FreeRTOS工程创建    

菜鸟
2025-05-16 10:27:58     打赏
2楼

麻烦介绍一下CMSIS_V2和CMSIS_V1的差异、分别使用场景,谢谢!


院士
2025-05-16 14:46:31     打赏
3楼

我怎么觉得CMSIS这层包装那么不爽呢!


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]