127 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			127 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* USER CODE BEGIN Header */
 | |
| /**
 | |
|   ******************************************************************************
 | |
|   * File Name          : freertos.c
 | |
|   * Description        : Code for freertos applications
 | |
|   ******************************************************************************
 | |
|   * @attention
 | |
|   *
 | |
|   * <h2><center>© Copyright (c) 2020 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"
 | |
| 
 | |
| /* Private includes ----------------------------------------------------------*/
 | |
| /* USER CODE BEGIN Includes */
 | |
| #include <stdbool.h>
 | |
| 
 | |
| /* 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 */
 | |
| 
 | |
| /* Private function prototypes -----------------------------------------------*/
 | |
| /* USER CODE BEGIN FunctionPrototypes */
 | |
| 
 | |
| /* USER CODE END FunctionPrototypes */
 | |
| 
 | |
| /* GetIdleTaskMemory prototype (linked to static allocation support) */
 | |
| void vApplicationGetIdleTaskMemory(
 | |
|     StaticTask_t** ppxIdleTaskTCBBuffer,
 | |
|     StackType_t** ppxIdleTaskStackBuffer,
 | |
|     uint32_t* pulIdleTaskStackSize);
 | |
| 
 | |
| /* GetTimerTaskMemory prototype (linked to static allocation support) */
 | |
| void vApplicationGetTimerTaskMemory(
 | |
|     StaticTask_t** ppxTimerTaskTCBBuffer,
 | |
|     StackType_t** ppxTimerTaskStackBuffer,
 | |
|     uint32_t* pulTimerTaskStackSize);
 | |
| 
 | |
| /* Hook prototypes */
 | |
| void vApplicationIdleHook(void);
 | |
| 
 | |
| /* USER CODE BEGIN 2 */
 | |
| __weak void vApplicationIdleHook(void) {
 | |
|     /* vApplicationIdleHook() will only be called if configUSE_IDLE_HOOK is set
 | |
|    to 1 in FreeRTOSConfig.h. It will be called on each iteration of the idle
 | |
|    task. It is essential that code added to this hook function never attempts
 | |
|    to block in any way (for example, call xQueueReceive() with a block time
 | |
|    specified, or call vTaskDelay()). If the application makes use of the
 | |
|    vTaskDelete() API function (as this demo application does) then it is also
 | |
|    important that vApplicationIdleHook() is permitted to return to its calling
 | |
|    function, because it is the responsibility of the idle task to clean up
 | |
|    memory allocated by the kernel to any task that has since been deleted. */
 | |
| }
 | |
| /* USER CODE END 2 */
 | |
| 
 | |
| /* USER CODE BEGIN GET_IDLE_TASK_MEMORY */
 | |
| static StaticTask_t xIdleTaskTCBBuffer;
 | |
| static StackType_t xIdleStack[configMINIMAL_STACK_SIZE];
 | |
| 
 | |
| void vApplicationGetIdleTaskMemory(
 | |
|     StaticTask_t** ppxIdleTaskTCBBuffer,
 | |
|     StackType_t** ppxIdleTaskStackBuffer,
 | |
|     uint32_t* pulIdleTaskStackSize) {
 | |
|     *ppxIdleTaskTCBBuffer = &xIdleTaskTCBBuffer;
 | |
|     *ppxIdleTaskStackBuffer = &xIdleStack[0];
 | |
|     *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
 | |
|     /* place for user code */
 | |
| }
 | |
| /* USER CODE END GET_IDLE_TASK_MEMORY */
 | |
| 
 | |
| /* USER CODE BEGIN GET_TIMER_TASK_MEMORY */
 | |
| static StaticTask_t xTimerTaskTCBBuffer;
 | |
| static StackType_t xTimerStack[configTIMER_TASK_STACK_DEPTH];
 | |
| 
 | |
| void vApplicationGetTimerTaskMemory(
 | |
|     StaticTask_t** ppxTimerTaskTCBBuffer,
 | |
|     StackType_t** ppxTimerTaskStackBuffer,
 | |
|     uint32_t* pulTimerTaskStackSize) {
 | |
|     *ppxTimerTaskTCBBuffer = &xTimerTaskTCBBuffer;
 | |
|     *ppxTimerTaskStackBuffer = &xTimerStack[0];
 | |
|     *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;
 | |
|     /* place for user code */
 | |
| }
 | |
| /* USER CODE END GET_TIMER_TASK_MEMORY */
 | |
| 
 | |
| /* Private application code --------------------------------------------------*/
 | |
| /* USER CODE BEGIN Application */
 | |
| bool task_equal(TaskHandle_t a, TaskHandle_t b) {
 | |
|     if(a == NULL || b == NULL) return false;
 | |
| 
 | |
|     return a == b;
 | |
| }
 | |
| 
 | |
| /* USER CODE END Application */
 | |
| 
 | |
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 | 
