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);//调用延时才会释放资源
  }
}

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

总结

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

相关文章
|
4月前
STM32CubeMX FreeRTOS 任务的挂起和恢复
STM32CubeMX FreeRTOS 任务的挂起和恢复
102 12
|
调度
STM32 FreeRTOS任务基础知识
STM32 FreeRTOS任务基础知识
178 0
STM32cubeMX快速配置FreeRTOS任务
STM32cubeMX快速配置FreeRTOS任务
385 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进行多任务编程。
|
5月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
428 2
|
4月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
694 0
|
5月前
|
IDE 开发工具
使用STM32F103标准库实现自定义键盘
通过本文,我们学习了如何使用STM32F103标准库实现一个简单的自定义键盘。我们首先初始化了GPIO引脚,然后实现了一个扫描函数来检测按键状态。这个项目不仅能够帮助我们理解STM32的GPIO配置和按键扫描原理,还可以作为进一步学习中断处理和低功耗设计的基础。希望本文对你有所帮助,祝你在嵌入式开发的道路上不断进步!
503 4