stm32RTOS创建任务

简介: stm32RTOS创建任务

前言

本篇文章带大家学习一下如何使用RTOS API函数创建任务。

一、cuebMX配置

具体配置

二、代码解析

1.系统创建的任务函数

下面我们来看看系统是如何创建一个任务的。

osThreadId defaultTaskHandle;//任务函数句柄
//StartDefaultTask:任务函数名字
//defaultTask:名字
//osPriorityNormal:任务优先级
osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
//任务函数的格式
void StartDefaultTask(void const * argument)
{
  /* USER CODE BEGIN 5 */
  /* Infinite loop */
  for(;;)
  {
  }
  /* USER CODE END 5 */
}

2.函数任务优先级

RTOS中给我们定义了如下优先级,优先级的数值越大优先级越高。

typedef enum  {
  osPriorityIdle          = -3,          ///< priority: idle (lowest)
  osPriorityLow           = -2,          ///< priority: low
  osPriorityBelowNormal   = -1,          ///< priority: below normal
  osPriorityNormal        =  0,          ///< priority: normal (default)
  osPriorityAboveNormal   = +1,          ///< priority: above normal
  osPriorityHigh          = +2,          ///< priority: high
  osPriorityRealtime      = +3,          ///< priority: realtime (highest)
  osPriorityError         =  0x84        ///< system cannot determine priority or thread has illegal priority
} osPriority;

3.自己创建任务函数

我们可以仿照系统给我们创建的函数,自己去创建任务函数。

osThreadId DirveTaskHandle;
void DriveTask(void const * argument);
osThreadDef(DriveTaskName, DriveTask, osPriorityAboveNormal, 0, 128);
DirveTaskHandle = osThreadCreate(osThread(DriveTaskName), NULL);
void DriveTask(void const * argument)
{  
  for(;;)
  {
    osDelay(5);//调用延时才会释放资源
  }
}

由此我们的任务函数就创建完成了,我们可以在任务函数中去调用我们自己写的函数,或者执行自己想要执行的程序。

总结

大家有什么问题的话,可以留言或者私信。

相关文章
|
调度
STM32 FreeRTOS任务基础知识
STM32 FreeRTOS任务基础知识
118 0
STM32cubeMX快速配置FreeRTOS任务
STM32cubeMX快速配置FreeRTOS任务
158 0
|
存储 调度
带你读《C/OS-III内核实现与应用开发实战指南:基于STM32》之三:任务的定义与任务切换
本书分为两部分,第一部分先教你如何从0到1把uC/OS-III内核写出来,从底层的汇编开始讲解任务如何定义、如何切换,还讲解了阻塞延时如何实现、如何支持多优先级、如何实现任务延时列表以及时间片等uC/OS的核心知识点;第二部分讲解uC/OS-III内核组件的应用以及使用uC/OS-III进行多任务编程。
带你读《C/OS-III内核实现与应用开发实战指南:基于STM32》之二:裸机系统与多任务系统
本书分为两部分,第一部分先教你如何从0到1把uC/OS-III内核写出来,从底层的汇编开始讲解任务如何定义、如何切换,还讲解了阻塞延时如何实现、如何支持多优先级、如何实现任务延时列表以及时间片等uC/OS的核心知识点;第二部分讲解uC/OS-III内核组件的应用以及使用uC/OS-III进行多任务编程。
|
1月前
【STM32】基于HAL库的360度编码器、摇杆代码编写
【STM32】基于HAL库的360度编码器、摇杆代码编写
|
3月前
|
C++ 芯片 编译器
STM32F103标准外设库—— 新建工程与库函数(四)
STM32F103标准外设库—— 新建工程与库函数(四)
47 0
STM32F103标准外设库—— 新建工程与库函数(四)
|
3月前
|
传感器 芯片 内存技术
STM32F103标准外设库——认识STM32(一)
STM32F103标准外设库——认识STM32(一)
112 0
STM32F103标准外设库——认识STM32(一)
|
3月前
|
芯片 存储 C语言
STM32F103标准外设库——固件库 (三)
STM32F103标准外设库——固件库 (三)
69 0
STM32F103标准外设库——固件库 (三)