STM32cubeMX快速配置FreeRTOS任务

简介: STM32cubeMX快速配置FreeRTOS任务

前言

本文带大家使用cubeMX快速配置FreeRTOS的任务。

一、cubeMX配置

1.选择FreeRTOS

image.png

2.为FreeRTOS分配任务栈大小

image.png

这里内存可以设置大一点,内存不足会导致任务无法创建。

3.创建任务

点击Add添加一个任务

image.png

1.Task Name:任务名字

2.priority:任务优先级

3.Stack size:任务堆栈大小(字节)

4.Entry Function:任务函数名字

其他几个参数我们设置为默认值就OK了

二、代码查看

1.创建任务

//cubeMX帮我们自动生成的任务
/* Create the thread(s) */
/* definition and creation of defaultTask */
osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
//我们自己创建的任务
/* definition and creation of Task1 */
osThreadDef(Task1, StartTask1, osPriorityNormal, 0, 128);
Task1Handle = osThreadCreate(osThread(Task1), NULL);
/* USER CODE BEGIN RTOS_THREADS */
/* add threads, ... */
/* USER CODE END RTOS_THREADS */
/* Start scheduler */
osKernelStart();//开启任务调度器

2.任务函数

使用osDelay函数会释放资源使任务进入阻塞状态。

/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void const * argument)
{
  /* USER CODE BEGIN 5 */
  /* Infinite loop */
  for(;;)
  {
  }
  /* USER CODE END 5 */
}
/* USER CODE BEGIN Header_StartTask1 */
/**
* @brief Function implementing the Task1 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTask1 */
void StartTask1(void const * argument)
{
  /* USER CODE BEGIN StartTask1 */
  /* Infinite loop */
  for(;;)
  {
    osDelay(1);
  }
  /* USER CODE END StartTask1 */
}

总结

使用cubeMX配置能大大减小我们代码的书写量。

相关文章
|
2天前
|
中间件 编译器 调度
STM32cubemx对FreeRTOS的适配(工程模板配置)
STM32cubemx对FreeRTOS的适配(工程模板配置)
103 0
|
8月前
|
传感器 移动开发 C语言
实战经验:stm32cubMX自动生成遇到的坑爹问题(Freertos)
实战经验:stm32cubMX自动生成遇到的坑爹问题(Freertos)
149 0
|
11月前
STM32F103移值FreeRtos笔记
STM32F103移值FreeRtos笔记
78 0
|
API
STM32cubeMX配置FreeRTOS
STM32cubeMX配置FreeRTOS
122 0
|
API
stm32RTOS创建任务
stm32RTOS创建任务
105 0
|
调度
STM32 FreeRTOS任务基础知识
STM32 FreeRTOS任务基础知识
122 0
STM32cubeMX配置FreeRTOS软件定时器
STM32cubeMX配置FreeRTOS软件定时器
145 0
|
传感器 物联网 5G
stm32f103ret6+sim800c+freertos上阿里云IOT笔记,后附视频(5分钟)
最近在研究阿里云的物联网的物联网平台,终于跑通了,把过程大概描述一下, 供大家参考一下吧。总的来讲不算太复杂,搞清楚设备使用MQTT协议connect和publish的部分就可以了。
2323 2
stm32f103ret6+sim800c+freertos上阿里云IOT笔记,后附视频(5分钟)
|
存储 调度
带你读《C/OS-III内核实现与应用开发实战指南:基于STM32》之三:任务的定义与任务切换
本书分为两部分,第一部分先教你如何从0到1把uC/OS-III内核写出来,从底层的汇编开始讲解任务如何定义、如何切换,还讲解了阻塞延时如何实现、如何支持多优先级、如何实现任务延时列表以及时间片等uC/OS的核心知识点;第二部分讲解uC/OS-III内核组件的应用以及使用uC/OS-III进行多任务编程。