You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
315 lines
9.4 KiB
315 lines
9.4 KiB
/* USER CODE BEGIN Header */ |
|
/** |
|
****************************************************************************** |
|
* File Name : freertos.c |
|
* Description : Code for freertos applications |
|
****************************************************************************** |
|
* @attention |
|
* |
|
* <h2><center>© Copyright (c) 2021 STMicroelectronics. |
|
* All rights reserved.</center></h2> |
|
* |
|
* 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****/
|
|
|