STM32CubeMX FreeRTOS 任务的挂起和恢复

简介: STM32CubeMX FreeRTOS 任务的挂起和恢复

一、任务

CubeMx可以使用 osThreadSuspend() 函数来挂起任务,


使用 osThreadResume() 函数来恢复任务。这两个函数可以在任务内部或其他任务中调用,用于动态地挂起和恢复任务的执行。


也可以使用 vTaskSuspend() 函数来挂起任务,使用 vTaskResume() 函数来恢复任务。


本次只用CubeMX中的来实现


  • vTaskSuspendAll()函数用于挂起所有任务,将系统进入低功耗模式。
  • xTaskResumeAll()函数用于恢复任务的运行,将系统退出低功耗模式。


二、CubeMX配置



时钟配置




使用的是stm32f103c8t6,pc13引脚是led



使用串口一的阻塞收发,只需要打开异步通信,其他保持不变



打开freertos



创建两个任务



任务优先级和默认的相同



生成工程




三、keil代码

在freertos.c中找到StartDefaultTask和StartTask02两个任务



在头文件添加usart.h

/* USER CODE BEGIN Includes */
#include "usart.h"
uint8_t a[1]; //将全局变量也定义了
/* USER CODE END Includes */



StartDefaultTask中接受串口数据并打印,判断是否挂起 StartTask02


void StartDefaultTask(void const * argument)
{
  /* USER CODE BEGIN StartDefaultTask */
  /* Infinite loop */
  for(;;)
  {
      HAL_UART_Receive(&huart1,a,1,0xFFFF);//阻塞接受
      HAL_UART_Transmit(&huart1,a,1,0xFFFF);//发送
      osDelay(300);//延时300ms
      if(a[0]==‘0’)
      {
        osThreadSuspend(myTask02Handle);
      }
      else if(a[0]==‘1’)
      {
        osThreadResume(myTask02Handle);
      }
      
 
  }
  /* USER CODE END StartDefaultTask */
}


StartTask02只做小灯闪烁


void StartTask02(void const * argument)
{
  /* USER CODE BEGIN StartTask02 */
  /* Infinite loop */
  for(;;)
  {
    HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);  //   任务二只做小灯闪烁
    osDelay(500);
  }
  /* USER CODE END StartTask02 */
}




打开下载自动复位



取消使能,记得全部保存



编译下载

suspend

链接: https://pan.baidu.com/s/1p623KuR-MihT2vg_5bimAQ?pwd=cwin 提取码: cwin

目录
相关文章
|
1月前
STM32CubeMX FreeRTOS 互斥锁
STM32CubeMX FreeRTOS 互斥锁
37 12
|
1月前
STM32Cubemx FreeRTOS Event
STM32Cubemx FreeRTOS Event
31 11
|
1月前
|
消息中间件
STM32CubeMX FreeRTOS 消息队列
STM32CubeMX FreeRTOS 消息队列
50 11
|
1月前
STM32Cubmx FreeRTOS Timer
STM32Cubmx FreeRTOS Timer
32 10
|
1月前
STM32CubeMX FreeRTOS点亮LED
STM32CubeMX FreeRTOS点亮LED
43 10
|
1月前
|
编解码
STM32CubeMX FreeRTOS u8g2图片菜单制作
STM32CubeMX FreeRTOS u8g2图片菜单制作
42 8
|
3月前
|
传感器
基于STM32与FreeRTOS的四轴机械臂项目-3
基于STM32与FreeRTOS的四轴机械臂项目
基于STM32与FreeRTOS的四轴机械臂项目-3
|
3月前
|
传感器
基于STM32与FreeRTOS的四轴机械臂项目-2
基于STM32与FreeRTOS的四轴机械臂项目
基于STM32与FreeRTOS的四轴机械臂项目-2
|
3月前
|
传感器 存储
基于STM32与FreeRTOS的四轴机械臂项目-1
基于STM32与FreeRTOS的四轴机械臂项目
基于STM32与FreeRTOS的四轴机械臂项目-1
|
1月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
167 0