diff options
Diffstat (limited to 'Projects/NUCLEO-WB35CE/Applications/FreeRTOS/FreeRTOS_Semaphore/readme.txt')
-rw-r--r-- | Projects/NUCLEO-WB35CE/Applications/FreeRTOS/FreeRTOS_Semaphore/readme.txt | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/Projects/NUCLEO-WB35CE/Applications/FreeRTOS/FreeRTOS_Semaphore/readme.txt b/Projects/NUCLEO-WB35CE/Applications/FreeRTOS/FreeRTOS_Semaphore/readme.txt new file mode 100644 index 000000000..b92277904 --- /dev/null +++ b/Projects/NUCLEO-WB35CE/Applications/FreeRTOS/FreeRTOS_Semaphore/readme.txt @@ -0,0 +1,87 @@ +/** + @page FreeRTOS_Semaphore FreeRTOS Semaphore example + + @verbatim + ****************************************************************************** + * @file FreeRTOS/FreeRTOS_Semaphore/readme.txt + * @author MCD Application Team + * @brief Description of the FreeRTOS Semaphore example. + ****************************************************************************** + * @attention + * + * <h2><center>© Copyright (c) 2019 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 + * + ****************************************************************************** + @endverbatim + +@par Application Description + +How to use semaphores with CMSIS RTOS API. + +This application creates two threads that toggle LEDs through a shared semaphore, +as following: + +The first thread which have the higher priority obtains the semaphore and +toggle the LED3 each 200 ms. After 5 seconds it releases the semaphore and +suspends itself. + +The low priority thread can execute now, it obtains the semaphore and +resume execution of the first thread, as it has the higher priority +the first thread will try to obtain the semaphore but it fails because +the semaphore is already taken by the low priority thread, which will +toggle the LED2 each 200 ms for 5 seconds before releasing the semaphore +to begin a new cycle + +@note Care must be taken when using HAL_Delay(), this function provides accurate + delay (in milliseconds) based on variable incremented in HAL time base ISR. + This implies that if HAL_Delay() is called from a peripheral ISR process, then + the HAL time base interrupt must have higher priority (numerically lower) than + the peripheral interrupt. Otherwise the caller ISR process will be blocked. + To change the HAL time base interrupt priority you have to use HAL_NVIC_SetPriority() + function. + +@note The application needs to ensure that the HAL time base is always set to 1 millisecond + to have correct HAL operation. + +@note The FreeRTOS heap size configTOTAL_HEAP_SIZE defined in FreeRTOSConfig.h is set accordingly to the + OS resources memory requirements of the application with +10% margin and rounded to the upper Kbyte boundary. + +For more details about FreeRTOS implementation on STM32Cube, please refer to UM1722 "Developing Applications +on STM32Cube with RTOS". + + +@par Directory contents + - FreeRTOS/FreeRTOS_Semaphore/Src/main.c Main program + - FreeRTOS/FreeRTOS_Semaphore/Src/app_FreeRTOS.c Code for freertos applications + - FreeRTOS/FreeRTOS_Semaphore/Src/stm32wbxx_hal_timebase_tim.c HAL timebase file + - FreeRTOS/FreeRTOS_Semaphore/Src/stm32wbxx_it.c Interrupt handlers + - FreeRTOS/FreeRTOS_Semaphore/Src/stm32wbxx_hal_msp.c MSP Initialization file + - FreeRTOS/FreeRTOS_Semaphore/Src/system_stm32wbxx.c STM32WBxx system clock configuration file + - FreeRTOS/FreeRTOS_Semaphore/Inc/main.h Main program header file + - FreeRTOS/FreeRTOS_Semaphore/Inc/stm32wbxx_hal_conf.h HAL Library Configuration file + - FreeRTOS/FreeRTOS_Semaphore/Inc/stm32wbxx_it.h Interrupt handlers header file + - FreeRTOS/FreeRTOS_Semaphore/Inc/FreeRTOSConfig.h FreeRTOS Configuration file + +@par Hardware and Software environment + + - This application runs on STM32WB35CEUx devices. + + - This application has been tested with NUCLEO-WB35CE board and can be + easily tailored to any other supported device and development board. + + +@par How to use it ? + +In order to make the program work, you must do the following: + - Open your preferred toolchain + - Rebuild all files and load your image into target memory + - Run the example + + * <h3><center>© COPYRIGHT STMicroelectronics</center></h3> + */ |