STM32Cubemx FreeRTOS Event

简介: STM32Cubemx FreeRTOS Event

一、Cubemx 配置


选好芯片型号后,先进行sys的配置



时钟配置,f103c8t6标准板子只有高速,低速可以不用




打开板载led



usart1配置 选择异步,其他默认



freertos配置,版本选择v2,v1没有事件相关函数




生成工程




二、Eevent

freertos.c

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "stdio.h"
#include "usart.h"
#include "event_groups.h"
/* USER CODE END Includes */
 
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
 
int fputc(int ch,FILE *f)
{
    HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,0xFFFF);
    return ch;
}
 
/* USER CODE END PTD */


/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN FunctionPrototypes */
// 定义事件组句柄
EventGroupHandle_t myEventGroup;
 
// 定义事件位
#define EVENT_BIT_1 (1 << 0)
#define EVENT_BIT_2 (1 << 1)
/* USER CODE END FunctionPrototypes */


  /* USER CODE BEGIN RTOS_TIMERS */
  /* start timers, add new ones, ... */
    // 初始化事件组
    myEventGroup = xEventGroupCreate();
  /* USER CODE END RTOS_TIMERS */


void StartTask02(void *argument)
{
  /* USER CODE BEGIN StartTask02 */
  /* Infinite loop */
  for(;;)
  {
    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);// open led 4s
    osDelay(4000);
    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);// close led 4s
    osDelay(4000);
    xEventGroupSetBits(myEventGroup, EVENT_BIT_1);
  }
  /* USER CODE END StartTask02 */
}


void StartTask03(void *argument)
{
  /* USER CODE BEGIN StartTask03 */
  /* Infinite loop */
  for(;;)
  { 
    printf("task2 ok!!\r\n");
    // 触发事件2
    xEventGroupSetBits(myEventGroup, EVENT_BIT_2);
    osDelay(4000);
  }
  /* USER CODE END StartTask03 */
}


void StartDefaultTask(void *argument)
{
  /* USER CODE BEGIN StartDefaultTask */
  /* Infinite loop */
  for(;;)
  {
        EventBits_t eventBits = xEventGroupWaitBits(myEventGroup, EVENT_BIT_1 | EVENT_BIT_2, pdTRUE, pdFALSE, portMAX_DELAY);
 
        if ((eventBits & (EVENT_BIT_1 | EVENT_BIT_2)) == (EVENT_BIT_1 | EVENT_BIT_2)) {
            // 所有指定的事件都已发生
            // 执行任务1的操作
            printf("task2 and task3 over!!\r\n");
            // 重置事件位,以便下次等待
            xEventGroupClearBits(myEventGroup, EVENT_BIT_1 | EVENT_BIT_2);
        }
 
    osDelay(4000);
  }
  /* USER CODE END StartDefaultTask */
}

运行效果



链接:https://pan.baidu.com/s/1ASV5C88yGT28ogq6OmUXIQ?pwd=ebuq 提取码:ebuq

目录
相关文章
|
6月前
|
JSON 数据可视化 物联网
基于STM32和FreeRTOS的实时天气系统设计与实现【免费开源】
随着物联网(IoT)技术的发展,实时数据监测系统逐渐成为日常生活和工业环境中不可或缺的组成部分。其中,气象监测系统不仅可以提供温度、湿度、天气状况等信息,还可以通过数据分析为农业、城市管理和个人生活提供智能化建议。本项目以STM32F407为核心控制器,结合FreeRTOS实时操作系统和ESP8266 Wi-Fi模块,实现一套高可靠、实时更新的智能气象监测系统。同时,系统集成了计时功能,通过串口屏将实时数据可视化展示,为用户提供直观的操作体验。
基于STM32和FreeRTOS的实时天气系统设计与实现【免费开源】
|
6月前
|
传感器 数据采集 物联网
基于STM32和FreeRTOS的智能手环项目设计与实现【免费开源】
随着可穿戴设备的普及,智能手环逐渐成为健康管理、运动监测和生活便捷的重要工具。本项目旨在设计一款基于STM32微控制器和FreeRTOS实时操作系统的智能手环,具备心率监测、运动计步、睡眠分析以及蓝牙通信功能。通过FreeRTOS实现多任务调度,提高系统响应效率和资源利用率,同时保证低功耗设计,延长手环续航。
基于STM32和FreeRTOS的智能手环项目设计与实现【免费开源】
|
消息中间件 Web App开发 API
FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6
FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6
FreeRTOS介绍 和 将FreeRTOS移植到STM32F103C8T6
|
中间件 编译器 调度
STM32cubemx对FreeRTOS的适配(工程模板配置)
STM32cubemx对FreeRTOS的适配(工程模板配置)
1519 0
STM32CubeMX FreeRTOS 互斥锁
STM32CubeMX FreeRTOS 互斥锁
706 12
STM32CubeMX FreeRTOS 任务的挂起和恢复
STM32CubeMX FreeRTOS 任务的挂起和恢复
505 12
|
消息中间件
STM32CubeMX FreeRTOS 消息队列
STM32CubeMX FreeRTOS 消息队列
1327 11
STM32Cubmx FreeRTOS Timer
STM32Cubmx FreeRTOS Timer
187 10
STM32CubeMX FreeRTOS点亮LED
STM32CubeMX FreeRTOS点亮LED
434 10