Mercurial > ~darius > hgwebdir.cgi > stm32temp
diff libs/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/NVIC/IRQ_Mask/readme.txt @ 0:c59513fd84fb
Initial commit of STM32 test code.
author | Daniel O'Connor <darius@dons.net.au> |
---|---|
date | Mon, 03 Oct 2011 21:19:15 +1030 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/NVIC/IRQ_Mask/readme.txt Mon Oct 03 21:19:15 2011 +1030 @@ -0,0 +1,158 @@ +/** + @page NVIC_IRQ_Mask NVIC IRQ Mask example + + @verbatim + ******************** (C) COPYRIGHT 2011 STMicroelectronics ******************* + * @file NVIC/IRQ_Mask/readme.txt + * @author MCD Application Team + * @version V3.5.0 + * @date 08-April-2011 + * @brief Description of the NVIC IRQ Mask example. + ****************************************************************************** + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + ****************************************************************************** + @endverbatim + +@par Example Description + +This example demontrates the use of the Nested Vectored Interrupt Controller (NVIC) +IRQ Channels configuration and how to mask/activate different IRQs: + +- Configuration of 3 TIM (TIM2..TIM4)timers to generate an interrupt on each + counter update event. + +- The three timers are linked to their correspondant Update IRQ channel. + +- Assignment of a ascendant IRQ priority for each IRQ channel : + - TIM2 has a preemption priority of 0 + - TIM3 has a preemption priority of 1 + - TIM4 has a preemption priority of 2 +- In each interrupt routine: + - TIM2 toggles a LED1 each 1s + - TIM3 toggles a LED2 each 2s + - TIM4 toggles a LED3 each 3s + +- The KEY and WAKEUP buttons are used to boost the execution priority as follows: + + - The KEY button is used in GPIO mode and at each KEY button press, the execution + priority is raised to 0 and turn LED4 ON. This prevents all exceptions with + configurable priority from activating, other than through the HardFault fault + escalation mechanism. As consequence, all LEDs stop toggling as TIM2, TIM3 + and TIM4 IRQs are prevented from activation. + + Pressing again the KEY button will release the priority boosting, turn LED4 + OFF and will allow all exceptions with configurable priority to be activated + and TIM2, TIM3 and TIM4 can be generated again and the LEDs restart toggling. + + This execution priority is made using the CMSIS functions "__disable_irq()" + and "__enable_irq()". + These two functions are managing the Cortex-M3 PRIMASK special register. + + - The WAKEUP button is used in EXTI mode and at each WAKEUP button press, the execution + priority is masked to 0x40 using the BASEPRI register. + A non-zero value will act as a priority mask, affecting the execution priority + when the priority defined by BASEPRI is the same or higher than the current + executing priority. + As consequence, LED2 and LED3 stop toggling as TIM3 and TIM4 IRQs are + prevented from activation. + Pressing again the WAKEUP button will configure the BASEPRI register to 0, + thus it has no effect on the current priority and TIM3 and TIM4 can be + generated again and LED2 and LED3 restart toggling. + + This execution priority is made using the CMSIS functions "__set_BASEPRI()". + This function is managing the Cortex-M3 BASEPRI special register. + Setting the BASEPRI register has no effect when the execution priority is + raised to 0 using the "__disable_irq()" function. + +@note These mechanisms only affect the group priority. They have no effect on + the sub-priority. The sub-priority is only used to sort pending exception + priorities, and does not affect active exceptions. + +@par Directory contents + + - NVIC/IRQ_Mask/stm32f10x_conf.h Library Configuration file + - NVIC/IRQ_Mask/stm32f10x_it.c Interrupt handlers + - NVIC/IRQ_Mask/stm32f10x_it.h Interrupt handlers header file + - NVIC/IRQ_Mask/main.c Main program + - NVIC/IRQ_Mask/system_stm32f10x.c STM32F10x system source file + +@par Hardware and Software environment + + - This example runs on STM32F10x Connectivity line, High-Density, High-Density + Value line, Medium-Density, XL-Density, Medium-Density Value line, Low-Density + and Low-Density Value line Devices. + + - This example has been tested with STMicroelectronics STM32100E-EVAL (High-Density + Value line), STM32100B-EVAL (Medium-Density Value line), STM3210C-EVAL (Connectivity line), + STM3210E-EVAL (High-Density and XL-Density) and STM3210B-EVAL (Medium-Density) + evaluation boards and can be easily tailored to any other supported device + and development board. + To select the STMicroelectronics evaluation board used to run the example, + uncomment the corresponding line in stm32_eval.h file (under Utilities\STM32_EVAL) + + - STM32100E-EVAL Set-up + - Use LED1, LED2, LED3 and LED4 leds connected respectively to PF.06, PF.07 + PF.08 and PF.09 + - Use the Key push-button connected to pin PG.08 (EXTI Line8). + - Use the Wakeup push-button connected to pin PA.00 (EXTI Line0). + @note the jumper JP4 must be not fit to be able to use the Wakeup push-button + + - STM32100B-EVAL Set-up + - Use LED1, LED2, LED3 and LED4 leds connected respectively to PC.06, PC.07, + PC.08 and PC.09 + - Use the Key push-button connected to pin PB.09 (EXTI Line9). + - Use the Wakeup push-button connected to pin PA.00 (EXTI Line0). + + - STM3210C-EVAL Set-up + - Use LED1, LED2, LED3 and LED4 connected respectively to PD.07, PD.13, PF.03 + and PD.04 pins + - Use the Key push-button connected to pin PB.09 (EXTI Line9). + - Use the Wakeup push-button connected to pin PA.00 (EXTI Line0). + @note Make sure that the Jumper 14 is in position 2<->3. + + - STM3210E-EVAL Set-up + - Use LED1, LED2, LED3 and LED4 leds connected respectively to PF.06, PF.07 + PF.08 and PF.09 + - Use the Key push-button connected to pin PG.08 (EXTI Line8). + - Use the Wakeup push-button connected to pin PA.00 (EXTI Line0). + @note the jumper JP4 must be not fit to be able to use the Wakeup push-button + + - STM3210B-EVAL Set-up + - Use LED1, LED2, LED3 and LED4 leds connected respectively to PC.06, PC.07, + PC.08 and PC.09 + - Use the Key push-button connected to pin PB.09 (EXTI Line9). + - Use the Wakeup push-button connected to pin PA.00 (EXTI Line0). + +@par How to use it ? + +In order to make the program work, you must do the following : + - Copy all source files from this example folder to the template folder under + Project\STM32F10x_StdPeriph_Template + - Open your preferred toolchain + - Rebuild all files and load your image into target memory + - Run the example + +@note + - Low-density Value line devices are STM32F100xx microcontrollers where the + Flash memory density ranges between 16 and 32 Kbytes. + - Low-density devices are STM32F101xx, STM32F102xx and STM32F103xx + microcontrollers where the Flash memory density ranges between 16 and 32 Kbytes. + - Medium-density Value line devices are STM32F100xx microcontrollers where + the Flash memory density ranges between 64 and 128 Kbytes. + - Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx + microcontrollers where the Flash memory density ranges between 64 and 128 Kbytes. + - High-density Value line devices are STM32F100xx microcontrollers where + the Flash memory density ranges between 256 and 512 Kbytes. + - High-density devices are STM32F101xx and STM32F103xx microcontrollers where + the Flash memory density ranges between 256 and 512 Kbytes. + - XL-density devices are STM32F101xx and STM32F103xx microcontrollers where + the Flash memory density ranges between 512 and 1024 Kbytes. + - Connectivity line devices are STM32F105xx and STM32F107xx microcontrollers. + + * <h3><center>© COPYRIGHT 2011 STMicroelectronics</center></h3> + */