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

目录
相关文章
|
8月前
|
JSON 数据可视化 物联网
基于STM32和FreeRTOS的实时天气系统设计与实现【免费开源】
随着物联网(IoT)技术的发展,实时数据监测系统逐渐成为日常生活和工业环境中不可或缺的组成部分。其中,气象监测系统不仅可以提供温度、湿度、天气状况等信息,还可以通过数据分析为农业、城市管理和个人生活提供智能化建议。本项目以STM32F407为核心控制器,结合FreeRTOS实时操作系统和ESP8266 Wi-Fi模块,实现一套高可靠、实时更新的智能气象监测系统。同时,系统集成了计时功能,通过串口屏将实时数据可视化展示,为用户提供直观的操作体验。
基于STM32和FreeRTOS的实时天气系统设计与实现【免费开源】
|
8月前
|
传感器 数据采集 物联网
基于STM32和FreeRTOS的智能手环项目设计与实现【免费开源】
随着可穿戴设备的普及,智能手环逐渐成为健康管理、运动监测和生活便捷的重要工具。本项目旨在设计一款基于STM32微控制器和FreeRTOS实时操作系统的智能手环,具备心率监测、运动计步、睡眠分析以及蓝牙通信功能。通过FreeRTOS实现多任务调度,提高系统响应效率和资源利用率,同时保证低功耗设计,延长手环续航。
基于STM32和FreeRTOS的智能手环项目设计与实现【免费开源】
STM32CubeMX FreeRTOS 互斥锁
STM32CubeMX FreeRTOS 互斥锁
780 12
STM32Cubemx FreeRTOS Event
STM32Cubemx FreeRTOS Event
443 11
|
消息中间件
STM32CubeMX FreeRTOS 消息队列
STM32CubeMX FreeRTOS 消息队列
1496 11
STM32Cubmx FreeRTOS Timer
STM32Cubmx FreeRTOS Timer
210 10
STM32CubeMX FreeRTOS点亮LED
STM32CubeMX FreeRTOS点亮LED
472 10
|
编解码
STM32CubeMX FreeRTOS u8g2图片菜单制作
STM32CubeMX FreeRTOS u8g2图片菜单制作
945 8
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
1722 2
下一篇
开通oss服务