/* USER CODE BEGIN Header */ /** ****************************************************************************** * File Name : freertos.c * Description : Code for freertos applications ****************************************************************************** * @attention * *

© Copyright (c) 2021 STMicroelectronics. * All rights reserved.

* * This software component is licensed by ST under Ultimate Liberty license * SLA0044, the "License"; You may not use this file except in compliance with * the License. You may obtain a copy of the License at: * www.st.com/SLA0044 * ****************************************************************************** */ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "FreeRTOS.h" #include "task.h" #include "main.h" #include "cmsis_os.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ /* USER CODE END PTD */ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ /* USER CODE END PD */ /* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM */ /* USER CODE END PM */ /* Private variables ---------------------------------------------------------*/ /* USER CODE BEGIN Variables */ /* USER CODE END Variables */ /* Definitions for DefaultTask */ osThreadId_t DefaultTaskHandle; const osThreadAttr_t DefaultTask_attributes = { .name = "DefaultTask", .stack_size = 256 * 4, .priority = (osPriority_t) osPriorityNormal, }; /* Definitions for UavcanRevTask */ osThreadId_t UavcanRevTaskHandle; const osThreadAttr_t UavcanRevTask_attributes = { .name = "UavcanRevTask", .stack_size = 256 * 4, .priority = (osPriority_t) osPriorityAboveNormal3, }; /* Definitions for UsartSendTask */ osThreadId_t UsartSendTaskHandle; const osThreadAttr_t UsartSendTask_attributes = { .name = "UsartSendTask", .stack_size = 128 * 4, .priority = (osPriority_t) osPriorityBelowNormal2, }; /* Definitions for UavcanSendTask */ osThreadId_t UavcanSendTaskHandle; const osThreadAttr_t UavcanSendTask_attributes = { .name = "UavcanSendTask", .stack_size = 512 * 4, .priority = (osPriority_t) osPriorityAboveNormal4, }; /* Definitions for UsartRevTask */ osThreadId_t UsartRevTaskHandle; const osThreadAttr_t UsartRevTask_attributes = { .name = "UsartRevTask", .stack_size = 256 * 4, .priority = (osPriority_t) osPriorityAboveNormal7, }; /* Definitions for proximityTask */ osThreadId_t proximityTaskHandle; const osThreadAttr_t proximityTask_attributes = { .name = "proximityTask", .stack_size = 256 * 4, .priority = (osPriority_t) osPriorityAboveNormal4, }; /* Definitions for uavcan_rev_queue */ osMessageQueueId_t uavcan_rev_queueHandle; const osMessageQueueAttr_t uavcan_rev_queue_attributes = { .name = "uavcan_rev_queue" }; /* Definitions for uavcan_send_queue */ osMessageQueueId_t uavcan_send_queueHandle; const osMessageQueueAttr_t uavcan_send_queue_attributes = { .name = "uavcan_send_queue" }; /* Definitions for usart_rev_queue */ osMessageQueueId_t usart_rev_queueHandle; const osMessageQueueAttr_t usart_rev_queue_attributes = { .name = "usart_rev_queue" }; /* Definitions for proximity1_queue */ osMessageQueueId_t proximity1_queueHandle; const osMessageQueueAttr_t proximity1_queue_attributes = { .name = "proximity1_queue" }; /* Definitions for proximity2_queue */ osMessageQueueId_t proximity2_queueHandle; const osMessageQueueAttr_t proximity2_queue_attributes = { .name = "proximity2_queue" }; /* Definitions for uavcan_send_mutex */ osMutexId_t uavcan_send_mutexHandle; const osMutexAttr_t uavcan_send_mutex_attributes = { .name = "uavcan_send_mutex" }; /* Definitions for radar_parse_mutex */ osMutexId_t radar_parse_mutexHandle; const osMutexAttr_t radar_parse_mutex_attributes = { .name = "radar_parse_mutex" }; /* Private function prototypes -----------------------------------------------*/ /* USER CODE BEGIN FunctionPrototypes */ /* USER CODE END FunctionPrototypes */ void StartDefaultTask(void *argument); void StartUavcanRevTask(void *argument); void StartTaskUsartSend(void *argument); void StartUavcanSendTask(void *argument); void StartUsartRevTask(void *argument); void StartProximity(void *argument); void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ /** * @brief FreeRTOS initialization * @param None * @retval None */ void MX_FREERTOS_Init(void) { /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Create the mutex(es) */ /* creation of uavcan_send_mutex */ uavcan_send_mutexHandle = osMutexNew(&uavcan_send_mutex_attributes); /* creation of radar_parse_mutex */ radar_parse_mutexHandle = osMutexNew(&radar_parse_mutex_attributes); /* USER CODE BEGIN RTOS_MUTEX */ /* add mutexes, ... */ /* USER CODE END RTOS_MUTEX */ /* USER CODE BEGIN RTOS_SEMAPHORES */ /* add semaphores, ... */ /* USER CODE END RTOS_SEMAPHORES */ /* USER CODE BEGIN RTOS_TIMERS */ /* start timers, add new ones, ... */ /* USER CODE END RTOS_TIMERS */ /* Create the queue(s) */ /* creation of uavcan_rev_queue */ uavcan_rev_queueHandle = osMessageQueueNew (10, sizeof(uavcan_rev_t), &uavcan_rev_queue_attributes); /* creation of uavcan_send_queue */ uavcan_send_queueHandle = osMessageQueueNew (5, sizeof(uavcan_send_data_t), &uavcan_send_queue_attributes); /* creation of usart_rev_queue */ usart_rev_queueHandle = osMessageQueueNew (10, sizeof(usart_data_t), &usart_rev_queue_attributes); /* creation of proximity1_queue */ proximity1_queueHandle = osMessageQueueNew (5, sizeof(proximity_data_t), &proximity1_queue_attributes); /* creation of proximity2_queue */ proximity2_queueHandle = osMessageQueueNew (5, sizeof(proximity_data_t), &proximity2_queue_attributes); /* USER CODE BEGIN RTOS_QUEUES */ /* add queues, ... */ /* USER CODE END RTOS_QUEUES */ /* Create the thread(s) */ /* creation of DefaultTask */ DefaultTaskHandle = osThreadNew(StartDefaultTask, NULL, &DefaultTask_attributes); /* creation of UavcanRevTask */ UavcanRevTaskHandle = osThreadNew(StartUavcanRevTask, NULL, &UavcanRevTask_attributes); /* creation of UsartSendTask */ UsartSendTaskHandle = osThreadNew(StartTaskUsartSend, NULL, &UsartSendTask_attributes); /* creation of UavcanSendTask */ UavcanSendTaskHandle = osThreadNew(StartUavcanSendTask, NULL, &UavcanSendTask_attributes); /* creation of UsartRevTask */ UsartRevTaskHandle = osThreadNew(StartUsartRevTask, NULL, &UsartRevTask_attributes); /* creation of proximityTask */ proximityTaskHandle = osThreadNew(StartProximity, NULL, &proximityTask_attributes); /* USER CODE BEGIN RTOS_THREADS */ /* add threads, ... */ /* USER CODE END RTOS_THREADS */ /* USER CODE BEGIN RTOS_EVENTS */ /* add events, ... */ /* USER CODE END RTOS_EVENTS */ } /* USER CODE BEGIN Header_StartDefaultTask */ /** * @brief Function implementing the DefaultTask thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_StartDefaultTask */ void StartDefaultTask(void *argument) { /* USER CODE BEGIN StartDefaultTask */ /* Infinite loop */ task_default_action(); /* USER CODE END StartDefaultTask */ } /* USER CODE BEGIN Header_StartUavcanRevTask */ /** * @brief Function implementing the UavcanRevTask thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_StartUavcanRevTask */ void StartUavcanRevTask(void *argument) { /* USER CODE BEGIN StartUavcanRevTask */ /* Infinite loop */ task_uavcan_rev_action(); /* USER CODE END StartUavcanRevTask */ } /* USER CODE BEGIN Header_StartTaskUsartSend */ /** * @brief Function implementing the UsartSendTask thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_StartTaskUsartSend */ void StartTaskUsartSend(void *argument) { /* USER CODE BEGIN StartTaskUsartSend */ /* Infinite loop */ task_usart_send(); /* USER CODE END StartTaskUsartSend */ } /* USER CODE BEGIN Header_StartUavcanSendTask */ /** * @brief Function implementing the UavcanSendTask thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_StartUavcanSendTask */ void StartUavcanSendTask(void *argument) { /* USER CODE BEGIN StartUavcanSendTask */ /* Infinite loop */ task_uavcan_send_action(); /* USER CODE END StartUavcanSendTask */ } /* USER CODE BEGIN Header_StartUsartRevTask */ /** * @brief Function implementing the UsartRevTask thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_StartUsartRevTask */ void StartUsartRevTask(void *argument) { /* USER CODE BEGIN StartUsartRevTask */ /* Infinite loop */ task_usart_rev_action(); /* USER CODE END StartUsartRevTask */ } /* USER CODE BEGIN Header_StartProximity */ /** * @brief Function implementing the proximityTask thread. * @param argument: Not used * @retval None */ /* USER CODE END Header_StartProximity */ void StartProximity(void *argument) { /* USER CODE BEGIN StartProximity */ /* Infinite loop */ task_proximity(); /* USER CODE END StartProximity */ } /* Private application code --------------------------------------------------*/ /* USER CODE BEGIN Application */ /* USER CODE END Application */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/