Skip to content

Commit 1b2b090

Browse files
n9wxuactions-userSkptak
authored
Added the minimal example (#823)
* re-adding main.c to the minimal example * Uncrustify: triggered by comment. * Update minimal_freertos_example/main.c Co-authored-by: Soren Ptak <[email protected]> * Add in the deleted cmake list * Added a single newline at the end of the cmake * Cleanup the CMakelists * updates the main & Cmake * Formatting --------- Co-authored-by: GitHub Action <[email protected]> Co-authored-by: Soren Ptak <[email protected]>
1 parent 2be332a commit 1b2b090

File tree

2 files changed

+133
-0
lines changed

2 files changed

+133
-0
lines changed

cmake_example/CMakeLists.txt

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
cmake_minimum_required(VERSION 3.15)
2+
3+
project(example)
4+
5+
set(FREERTOS_KERNEL_PATH "../")
6+
7+
# Add the freertos_config for FreeRTOS-Kernel
8+
add_library(freertos_config INTERFACE)
9+
10+
target_include_directories(freertos_config
11+
INTERFACE
12+
../sample_configuration
13+
)
14+
15+
# Select the heap port. values between 1-4 will pick a heap.
16+
# set(FREERTOS_HEAP "4" CACHE STRING "" FORCE)
17+
18+
# Select the native compile PORT
19+
set(FREERTOS_PORT "TEMPLATE" CACHE STRING "" FORCE)
20+
21+
# Adding the FreeRTOS-Kernel subdirectory
22+
add_subdirectory(${FREERTOS_KERNEL_PATH} FreeRTOS-Kernel)
23+
24+
add_executable(${PROJECT_NAME}
25+
main.c
26+
)
27+
28+
target_link_libraries(${PROJECT_NAME} freertos_kernel freertos_config)

cmake_example/main.c

+105
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
/*
2+
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
3+
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4+
*
5+
* SPDX-License-Identifier: MIT
6+
*
7+
* Permission is hereby granted, free of charge, to any person obtaining a copy of
8+
* this software and associated documentation files (the "Software"), to deal in
9+
* the Software without restriction, including without limitation the rights to
10+
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11+
* the Software, and to permit persons to whom the Software is furnished to do so,
12+
* subject to the following conditions:
13+
*
14+
* The above copyright notice and this permission notice shall be included in all
15+
* copies or substantial portions of the Software.
16+
*
17+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19+
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20+
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21+
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22+
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23+
*
24+
* https://www.FreeRTOS.org
25+
* https://github.com/FreeRTOS
26+
*
27+
*/
28+
29+
/*
30+
* This is a simple main that will start the FreeRTOS-Kernel and run a periodic task
31+
* that only delays if compiled with the template port, this project will do nothing.
32+
* For more information on getting started please look here:
33+
* https://freertos.org/FreeRTOS-quick-start-guide.html
34+
*/
35+
36+
#include <FreeRTOS.h>
37+
#include <task.h>
38+
#include <queue.h>
39+
#include <timers.h>
40+
#include <semphr.h>
41+
42+
#include <stdio.h>
43+
44+
static StaticTask_t exampleTaskTCB;
45+
static StackType_t exampleTaskStack[ configMINIMAL_STACK_SIZE ];
46+
47+
static StaticTask_t xTimerTaskTCB;
48+
static StackType_t uxTimerTaskStack[ configTIMER_TASK_STACK_DEPTH ];
49+
50+
static StaticTask_t xIdleTaskTCB;
51+
static StackType_t uxIdleTaskStack[ configMINIMAL_STACK_SIZE ];
52+
53+
void exampleTask( void * parameters )
54+
{
55+
for( ; ; )
56+
{
57+
/* Example Task Code */
58+
vTaskDelay( 100 ); /* delay 100 ticks */
59+
}
60+
}
61+
62+
int main( void )
63+
{
64+
printf( "Example FreeRTOS Project\n" );
65+
66+
xTaskCreateStatic( exampleTask,
67+
"example",
68+
configMINIMAL_STACK_SIZE,
69+
NULL,
70+
configMAX_PRIORITIES - 1,
71+
exampleTaskStack,
72+
&exampleTaskTCB );
73+
74+
vTaskStartScheduler();
75+
76+
/* should never get here. */
77+
for( ; ; )
78+
{
79+
}
80+
81+
return 0;
82+
}
83+
84+
void vApplicationStackOverflowHook( TaskHandle_t xTask,
85+
char * pcTaskName )
86+
{
87+
}
88+
89+
void vApplicationGetTimerTaskMemory( StaticTask_t ** ppxTimerTaskTCBBuffer,
90+
StackType_t ** ppxTimerTaskStackBuffer,
91+
uint32_t * pulTimerTaskStackSize )
92+
{
93+
*ppxTimerTaskTCBBuffer = &xTimerTaskTCB;
94+
*ppxTimerTaskStackBuffer = uxTimerTaskStack;
95+
*pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;
96+
}
97+
98+
void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer,
99+
StackType_t ** ppxIdleTaskStackBuffer,
100+
uint32_t * pulIdleTaskStackSize )
101+
{
102+
*ppxIdleTaskTCBBuffer = &xIdleTaskTCB;
103+
*ppxIdleTaskStackBuffer = uxIdleTaskStack;
104+
*pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
105+
}

0 commit comments

Comments
 (0)