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

目录
相关文章
|
4月前
STM32CubeMX FreeRTOS 互斥锁
STM32CubeMX FreeRTOS 互斥锁
162 12
|
4月前
STM32Cubemx FreeRTOS Event
STM32Cubemx FreeRTOS Event
38 11
|
4月前
|
消息中间件
STM32CubeMX FreeRTOS 消息队列
STM32CubeMX FreeRTOS 消息队列
139 11
|
4月前
STM32Cubmx FreeRTOS Timer
STM32Cubmx FreeRTOS Timer
47 10
|
4月前
STM32CubeMX FreeRTOS点亮LED
STM32CubeMX FreeRTOS点亮LED
78 10
|
4月前
|
编解码
STM32CubeMX FreeRTOS u8g2图片菜单制作
STM32CubeMX FreeRTOS u8g2图片菜单制作
130 8
|
6月前
|
传感器
基于STM32与FreeRTOS的四轴机械臂项目-3
基于STM32与FreeRTOS的四轴机械臂项目
基于STM32与FreeRTOS的四轴机械臂项目-3
|
6月前
|
传感器
基于STM32与FreeRTOS的四轴机械臂项目-2
基于STM32与FreeRTOS的四轴机械臂项目
基于STM32与FreeRTOS的四轴机械臂项目-2
|
6月前
|
传感器 存储
基于STM32与FreeRTOS的四轴机械臂项目-1
基于STM32与FreeRTOS的四轴机械臂项目
基于STM32与FreeRTOS的四轴机械臂项目-1
|
5月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
428 2