aboutsummaryrefslogtreecommitdiffstats
path: root/stm32lib/src/stm32f10x_nvic.c
diff options
context:
space:
mode:
Diffstat (limited to 'stm32lib/src/stm32f10x_nvic.c')
-rw-r--r--stm32lib/src/stm32f10x_nvic.c751
1 files changed, 0 insertions, 751 deletions
diff --git a/stm32lib/src/stm32f10x_nvic.c b/stm32lib/src/stm32f10x_nvic.c
deleted file mode 100644
index 0ce30af..0000000
--- a/stm32lib/src/stm32f10x_nvic.c
+++ /dev/null
@@ -1,751 +0,0 @@
-/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
-* File Name : stm32f10x_nvic.c
-* Author : MCD Application Team
-* Version : V2.0.2
-* Date : 07/11/2008
-* Description : This file provides all the NVIC firmware functions.
-********************************************************************************
-* 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.
-*******************************************************************************/
-
-/* Includes ------------------------------------------------------------------*/
-#include "stm32f10x_nvic.h"
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-#define AIRCR_VECTKEY_MASK ((u32)0x05FA0000)
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-/*******************************************************************************
-* Function Name : NVIC_DeInit
-* Description : Deinitializes the NVIC peripheral registers to their default
-* reset values.
-* Input : None
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_DeInit(void)
-{
- u32 index = 0;
-
- NVIC->ICER[0] = 0xFFFFFFFF;
- NVIC->ICER[1] = 0x0FFFFFFF;
- NVIC->ICPR[0] = 0xFFFFFFFF;
- NVIC->ICPR[1] = 0x0FFFFFFF;
-
- for(index = 0; index < 0x0F; index++)
- {
- NVIC->IPR[index] = 0x00000000;
- }
-}
-
-/*******************************************************************************
-* Function Name : NVIC_SCBDeInit
-* Description : Deinitializes the SCB peripheral registers to their default
-* reset values.
-* Input : None
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_SCBDeInit(void)
-{
- u32 index = 0x00;
-
- SCB->ICSR = 0x0A000000;
- SCB->VTOR = 0x00000000;
- SCB->AIRCR = AIRCR_VECTKEY_MASK;
- SCB->SCR = 0x00000000;
- SCB->CCR = 0x00000000;
- for(index = 0; index < 0x03; index++)
- {
- SCB->SHPR[index] = 0;
- }
- SCB->SHCSR = 0x00000000;
- SCB->CFSR = 0xFFFFFFFF;
- SCB->HFSR = 0xFFFFFFFF;
- SCB->DFSR = 0xFFFFFFFF;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_PriorityGroupConfig
-* Description : Configures the priority grouping: pre-emption priority
-* and subpriority.
-* Input : - NVIC_PriorityGroup: specifies the priority grouping bits
-* length. This parameter can be one of the following values:
-* - NVIC_PriorityGroup_0: 0 bits for pre-emption priority
-* 4 bits for subpriority
-* - NVIC_PriorityGroup_1: 1 bits for pre-emption priority
-* 3 bits for subpriority
-* - NVIC_PriorityGroup_2: 2 bits for pre-emption priority
-* 2 bits for subpriority
-* - NVIC_PriorityGroup_3: 3 bits for pre-emption priority
-* 1 bits for subpriority
-* - NVIC_PriorityGroup_4: 4 bits for pre-emption priority
-* 0 bits for subpriority
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup)
-{
- /* Check the parameters */
- assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));
-
- /* Set the PRIGROUP[10:8] bits according to NVIC_PriorityGroup value */
- SCB->AIRCR = AIRCR_VECTKEY_MASK | NVIC_PriorityGroup;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_Init
-* Description : Initializes the NVIC peripheral according to the specified
-* parameters in the NVIC_InitStruct.
-* Input : - NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure
-* that contains the configuration information for the
-* specified NVIC peripheral.
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)
-{
- u32 tmppriority = 0x00, tmpreg = 0x00, tmpmask = 0x00;
- u32 tmppre = 0, tmpsub = 0x0F;
-
- /* Check the parameters */
- assert_param(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));
- assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_InitStruct->NVIC_IRQChannel));
- assert_param(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority));
- assert_param(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));
-
- if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
- {
- /* Compute the Corresponding IRQ Priority --------------------------------*/
- tmppriority = (0x700 - (SCB->AIRCR & (u32)0x700))>> 0x08;
- tmppre = (0x4 - tmppriority);
- tmpsub = tmpsub >> tmppriority;
-
- tmppriority = (u32)NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority << tmppre;
- tmppriority |= NVIC_InitStruct->NVIC_IRQChannelSubPriority & tmpsub;
-
- tmppriority = tmppriority << 0x04;
- tmppriority = ((u32)tmppriority) << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
-
- tmpreg = NVIC->IPR[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)];
- tmpmask = (u32)0xFF << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08);
- tmpreg &= ~tmpmask;
- tmppriority &= tmpmask;
- tmpreg |= tmppriority;
-
- NVIC->IPR[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)] = tmpreg;
-
- /* Enable the Selected IRQ Channels --------------------------------------*/
- NVIC->ISER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
- (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);
- }
- else
- {
- /* Disable the Selected IRQ Channels -------------------------------------*/
- NVIC->ICER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] =
- (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F);
- }
-}
-
-/*******************************************************************************
-* Function Name : NVIC_StructInit
-* Description : Fills each NVIC_InitStruct member with its default value.
-* Input : - NVIC_InitStruct: pointer to a NVIC_InitTypeDef structure which
-* will be initialized.
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_StructInit(NVIC_InitTypeDef* NVIC_InitStruct)
-{
- /* NVIC_InitStruct members default value */
- NVIC_InitStruct->NVIC_IRQChannel = 0x00;
- NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority = 0x00;
- NVIC_InitStruct->NVIC_IRQChannelSubPriority = 0x00;
- NVIC_InitStruct->NVIC_IRQChannelCmd = DISABLE;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_SETPRIMASK
-* Description : Enables the PRIMASK priority: Raises the execution priority to 0.
-* Input : None
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_SETPRIMASK(void)
-{
- __SETPRIMASK();
-}
-
-/*******************************************************************************
-* Function Name : NVIC_RESETPRIMASK
-* Description : Disables the PRIMASK priority.
-* Input : None
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_RESETPRIMASK(void)
-{
- __RESETPRIMASK();
-}
-
-/*******************************************************************************
-* Function Name : NVIC_SETFAULTMASK
-* Description : Enables the FAULTMASK priority: Raises the execution priority to -1.
-* Input : None
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_SETFAULTMASK(void)
-{
- __SETFAULTMASK();
-}
-
-/*******************************************************************************
-* Function Name : NVIC_RESETFAULTMASK
-* Description : Disables the FAULTMASK priority.
-* Input : None
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_RESETFAULTMASK(void)
-{
- __RESETFAULTMASK();
-}
-
-/*******************************************************************************
-* Function Name : NVIC_BASEPRICONFIG
-* Description : The execution priority can be changed from 15 (lowest
- configurable priority) to 1. Writing a zero value will disable
-* the mask of execution priority.
-* Input : None
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_BASEPRICONFIG(u32 NewPriority)
-{
- /* Check the parameters */
- assert_param(IS_NVIC_BASE_PRI(NewPriority));
-
- __BASEPRICONFIG(NewPriority << 0x04);
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GetBASEPRI
-* Description : Returns the BASEPRI mask value.
-* Input : None
-* Output : None
-* Return : BASEPRI register value
-*******************************************************************************/
-u32 NVIC_GetBASEPRI(void)
-{
- return (__GetBASEPRI());
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GetCurrentPendingIRQChannel
-* Description : Returns the current pending IRQ channel identifier.
-* Input : None
-* Output : None
-* Return : Pending IRQ Channel Identifier.
-*******************************************************************************/
-u16 NVIC_GetCurrentPendingIRQChannel(void)
-{
- return ((u16)((SCB->ICSR & (u32)0x003FF000) >> 0x0C));
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GetIRQChannelPendingBitStatus
-* Description : Checks whether the specified IRQ Channel pending bit is set
-* or not.
-* Input : - NVIC_IRQChannel: specifies the interrupt pending bit to check.
-* Output : None
-* Return : The new state of IRQ Channel pending bit(SET or RESET).
-*******************************************************************************/
-ITStatus NVIC_GetIRQChannelPendingBitStatus(u8 NVIC_IRQChannel)
-{
- ITStatus pendingirqstatus = RESET;
- u32 tmp = 0x00;
-
- /* Check the parameters */
- assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
-
- tmp = ((u32)0x01 << (NVIC_IRQChannel & (u32)0x1F));
-
- if (((NVIC->ISPR[(NVIC_IRQChannel >> 0x05)]) & tmp) == tmp)
- {
- pendingirqstatus = SET;
- }
- else
- {
- pendingirqstatus = RESET;
- }
- return pendingirqstatus;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_SetIRQChannelPendingBit
-* Description : Sets the NVIC’s interrupt pending bit.
-* Input : - NVIC_IRQChannel: specifies the interrupt pending bit to Set.
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_SetIRQChannelPendingBit(u8 NVIC_IRQChannel)
-{
- /* Check the parameters */
- assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
-
- *(vu32*) 0xE000EF00 = (u32)NVIC_IRQChannel;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_ClearIRQChannelPendingBit
-* Description : Clears the NVIC’s interrupt pending bit.
-* Input : - NVIC_IRQChannel: specifies the interrupt pending bit to clear.
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_ClearIRQChannelPendingBit(u8 NVIC_IRQChannel)
-{
- /* Check the parameters */
- assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
-
- NVIC->ICPR[(NVIC_IRQChannel >> 0x05)] = (u32)0x01 << (NVIC_IRQChannel & (u32)0x1F);
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GetCurrentActiveHandler
-* Description : Returns the current active Handler (IRQ Channel and
-* SystemHandler) identifier.
-* Input : None
-* Output : None
-* Return : Active Handler Identifier.
-*******************************************************************************/
-u16 NVIC_GetCurrentActiveHandler(void)
-{
- return ((u16)(SCB->ICSR & (u32)0x3FF));
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GetIRQChannelActiveBitStatus
-* Description : Checks whether the specified IRQ Channel active bit is set
-* or not.
-* Input : - NVIC_IRQChannel: specifies the interrupt active bit to check.
-* Output : None
-* Return : The new state of IRQ Channel active bit(SET or RESET).
-*******************************************************************************/
-ITStatus NVIC_GetIRQChannelActiveBitStatus(u8 NVIC_IRQChannel)
-{
- ITStatus activeirqstatus = RESET;
- u32 tmp = 0x00;
-
- /* Check the parameters */
- assert_param(IS_NVIC_IRQ_CHANNEL(NVIC_IRQChannel));
-
- tmp = ((u32)0x01 << (NVIC_IRQChannel & (u32)0x1F));
-
- if (((NVIC->IABR[(NVIC_IRQChannel >> 0x05)]) & tmp) == tmp )
- {
- activeirqstatus = SET;
- }
- else
- {
- activeirqstatus = RESET;
- }
- return activeirqstatus;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GetCPUID
-* Description : Returns the ID number, the version number and the implementation
-* details of the Cortex-M3 core.
-* Input : None
-* Output : None
-* Return : CPU ID.
-*******************************************************************************/
-u32 NVIC_GetCPUID(void)
-{
- return (SCB->CPUID);
-}
-
-/*******************************************************************************
-* Function Name : NVIC_SetVectorTable
-* Description : Sets the vector table location and Offset.
-* Input : - NVIC_VectTab: specifies if the vector table is in RAM or
-* FLASH memory.
-* This parameter can be one of the following values:
-* - NVIC_VectTab_RAM
-* - NVIC_VectTab_FLASH
-* - Offset: Vector Table base offset field.
-* This value must be a multiple of 0x100.
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset)
-{
- /* Check the parameters */
- assert_param(IS_NVIC_VECTTAB(NVIC_VectTab));
- assert_param(IS_NVIC_OFFSET(Offset));
-
- SCB->VTOR = NVIC_VectTab | (Offset & (u32)0x1FFFFF80);
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GenerateSystemReset
-* Description : Generates a system reset.
-* Input : None
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_GenerateSystemReset(void)
-{
- SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x04;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GenerateCoreReset
-* Description : Generates a Core (Core + NVIC) reset.
-* Input : None
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_GenerateCoreReset(void)
-{
- SCB->AIRCR = AIRCR_VECTKEY_MASK | (u32)0x01;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_SystemLPConfig
-* Description : Selects the condition for the system to enter low power mode.
-* Input : - LowPowerMode: Specifies the new mode for the system to enter
-* low power mode.
-* This parameter can be one of the following values:
-* - NVIC_LP_SEVONPEND
-* - NVIC_LP_SLEEPDEEP
-* - NVIC_LP_SLEEPONEXIT
-* - NewState: new state of LP condition.
-* This parameter can be: ENABLE or DISABLE.
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_SystemLPConfig(u8 LowPowerMode, FunctionalState NewState)
-{
- /* Check the parameters */
- assert_param(IS_NVIC_LP(LowPowerMode));
- assert_param(IS_FUNCTIONAL_STATE(NewState));
-
- if (NewState != DISABLE)
- {
- SCB->SCR |= LowPowerMode;
- }
- else
- {
- SCB->SCR &= (u32)(~(u32)LowPowerMode);
- }
-}
-
-/*******************************************************************************
-* Function Name : NVIC_SystemHandlerConfig
-* Description : Enables or disables the specified System Handlers.
-* Input : - SystemHandler: specifies the system handler to be enabled
-* or disabled.
-* This parameter can be one of the following values:
-* - SystemHandler_MemoryManage
-* - SystemHandler_BusFault
-* - SystemHandler_UsageFault
-* - NewState: new state of specified System Handlers.
-* This parameter can be: ENABLE or DISABLE.
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_SystemHandlerConfig(u32 SystemHandler, FunctionalState NewState)
-{
- u32 tmpreg = 0x00;
-
- /* Check the parameters */
- assert_param(IS_CONFIG_SYSTEM_HANDLER(SystemHandler));
- assert_param(IS_FUNCTIONAL_STATE(NewState));
-
- tmpreg = (u32)0x01 << (SystemHandler & (u32)0x1F);
-
- if (NewState != DISABLE)
- {
- SCB->SHCSR |= tmpreg;
- }
- else
- {
- SCB->SHCSR &= ~tmpreg;
- }
-}
-
-/*******************************************************************************
-* Function Name : NVIC_SystemHandlerPriorityConfig
-* Description : Configures the specified System Handlers priority.
-* Input : - SystemHandler: specifies the system handler to be
-* enabled or disabled.
-* This parameter can be one of the following values:
-* - SystemHandler_MemoryManage
-* - SystemHandler_BusFault
-* - SystemHandler_UsageFault
-* - SystemHandler_SVCall
-* - SystemHandler_DebugMonitor
-* - SystemHandler_PSV
-* - SystemHandler_SysTick
-* - SystemHandlerPreemptionPriority: new priority group of the
-* specified system handlers.
-* - SystemHandlerSubPriority: new sub priority of the specified
-* system handlers.
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_SystemHandlerPriorityConfig(u32 SystemHandler, u8 SystemHandlerPreemptionPriority,
- u8 SystemHandlerSubPriority)
-{
- u32 tmp1 = 0x00, tmp2 = 0xFF, handlermask = 0x00;
- u32 tmppriority = 0x00;
-
- /* Check the parameters */
- assert_param(IS_PRIORITY_SYSTEM_HANDLER(SystemHandler));
- assert_param(IS_NVIC_PREEMPTION_PRIORITY(SystemHandlerPreemptionPriority));
- assert_param(IS_NVIC_SUB_PRIORITY(SystemHandlerSubPriority));
-
- tmppriority = (0x700 - (SCB->AIRCR & (u32)0x700))>> 0x08;
- tmp1 = (0x4 - tmppriority);
- tmp2 = tmp2 >> tmppriority;
-
- tmppriority = (u32)SystemHandlerPreemptionPriority << tmp1;
- tmppriority |= SystemHandlerSubPriority & tmp2;
-
- tmppriority = tmppriority << 0x04;
- tmp1 = SystemHandler & (u32)0xC0;
- tmp1 = tmp1 >> 0x06;
- tmp2 = (SystemHandler >> 0x08) & (u32)0x03;
- tmppriority = tmppriority << (tmp2 * 0x08);
- handlermask = (u32)0xFF << (tmp2 * 0x08);
-
- SCB->SHPR[tmp1] &= ~handlermask;
- SCB->SHPR[tmp1] |= tmppriority;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GetSystemHandlerPendingBitStatus
-* Description : Checks whether the specified System handlers pending bit is
-* set or not.
-* Input : - SystemHandler: specifies the system handler pending bit to
-* check.
-* This parameter can be one of the following values:
-* - SystemHandler_MemoryManage
-* - SystemHandler_BusFault
-* - SystemHandler_SVCall
-* Output : None
-* Return : The new state of System Handler pending bit(SET or RESET).
-*******************************************************************************/
-ITStatus NVIC_GetSystemHandlerPendingBitStatus(u32 SystemHandler)
-{
- ITStatus bitstatus = RESET;
- u32 tmp = 0x00, tmppos = 0x00;
-
- /* Check the parameters */
- assert_param(IS_GET_PENDING_SYSTEM_HANDLER(SystemHandler));
-
- tmppos = (SystemHandler >> 0x0A);
- tmppos &= (u32)0x0F;
-
- tmppos = (u32)0x01 << tmppos;
-
- tmp = SCB->SHCSR & tmppos;
-
- if (tmp == tmppos)
- {
- bitstatus = SET;
- }
- else
- {
- bitstatus = RESET;
- }
- return bitstatus;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_SetSystemHandlerPendingBit
-* Description : Sets System Handler pending bit.
-* Input : - SystemHandler: specifies the system handler pending bit
-* to be set.
-* This parameter can be one of the following values:
-* - SystemHandler_NMI
-* - SystemHandler_PSV
-* - SystemHandler_SysTick
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_SetSystemHandlerPendingBit(u32 SystemHandler)
-{
- u32 tmp = 0x00;
-
- /* Check the parameters */
- assert_param(IS_SET_PENDING_SYSTEM_HANDLER(SystemHandler));
-
- /* Get the System Handler pending bit position */
- tmp = SystemHandler & (u32)0x1F;
- /* Set the corresponding System Handler pending bit */
- SCB->ICSR |= ((u32)0x01 << tmp);
-}
-
-/*******************************************************************************
-* Function Name : NVIC_ClearSystemHandlerPendingBit
-* Description : Clears System Handler pending bit.
-* Input : - SystemHandler: specifies the system handler pending bit to
-* be clear.
-* This parameter can be one of the following values:
-* - SystemHandler_PSV
-* - SystemHandler_SysTick
-* Output : None
-* Return : None
-*******************************************************************************/
-void NVIC_ClearSystemHandlerPendingBit(u32 SystemHandler)
-{
- u32 tmp = 0x00;
-
- /* Check the parameters */
- assert_param(IS_CLEAR_SYSTEM_HANDLER(SystemHandler));
-
- /* Get the System Handler pending bit position */
- tmp = SystemHandler & (u32)0x1F;
- /* Clear the corresponding System Handler pending bit */
- SCB->ICSR |= ((u32)0x01 << (tmp - 0x01));
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GetSystemHandlerActiveBitStatus
-* Description : Checks whether the specified System handlers active bit is
-* set or not.
-* Input : - SystemHandler: specifies the system handler active bit to
-* check.
-* This parameter can be one of the following values:
-* - SystemHandler_MemoryManage
-* - SystemHandler_BusFault
-* - SystemHandler_UsageFault
-* - SystemHandler_SVCall
-* - SystemHandler_DebugMonitor
-* - SystemHandler_PSV
-* - SystemHandler_SysTick
-* Output : None
-* Return : The new state of System Handler active bit(SET or RESET).
-*******************************************************************************/
-ITStatus NVIC_GetSystemHandlerActiveBitStatus(u32 SystemHandler)
-{
- ITStatus bitstatus = RESET;
-
- u32 tmp = 0x00, tmppos = 0x00;
-
- /* Check the parameters */
- assert_param(IS_GET_ACTIVE_SYSTEM_HANDLER(SystemHandler));
-
- tmppos = (SystemHandler >> 0x0E) & (u32)0x0F;
-
- tmppos = (u32)0x01 << tmppos;
-
- tmp = SCB->SHCSR & tmppos;
-
- if (tmp == tmppos)
- {
- bitstatus = SET;
- }
- else
- {
- bitstatus = RESET;
- }
- return bitstatus;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GetFaultHandlerSources
-* Description : Returns the system fault handlers sources.
-* Input : - SystemHandler: specifies the system handler to get its fault
-* sources.
-* This parameter can be one of the following values:
-* - SystemHandler_HardFault
-* - SystemHandler_MemoryManage
-* - SystemHandler_BusFault
-* - SystemHandler_UsageFault
-* - SystemHandler_DebugMonitor
-* Output : None
-* Return : Source of the fault handler.
-*******************************************************************************/
-u32 NVIC_GetFaultHandlerSources(u32 SystemHandler)
-{
- u32 faultsources = 0x00;
- u32 tmpreg = 0x00, tmppos = 0x00;
-
- /* Check the parameters */
- assert_param(IS_FAULT_SOURCE_SYSTEM_HANDLER(SystemHandler));
-
- tmpreg = (SystemHandler >> 0x12) & (u32)0x03;
- tmppos = (SystemHandler >> 0x14) & (u32)0x03;
-
- if (tmpreg == 0x00)
- {
- faultsources = SCB->HFSR;
- }
- else if (tmpreg == 0x01)
- {
- faultsources = SCB->CFSR >> (tmppos * 0x08);
- if (tmppos != 0x02)
- {
- faultsources &= (u32)0x0F;
- }
- else
- {
- faultsources &= (u32)0xFF;
- }
- }
- else
- {
- faultsources = SCB->DFSR;
- }
- return faultsources;
-}
-
-/*******************************************************************************
-* Function Name : NVIC_GetFaultAddress
-* Description : Returns the address of the location that generated a fault
-* handler.
-* Input : - SystemHandler: specifies the system handler to get its
-* fault address.
-* This parameter can be one of the following values:
-* - SystemHandler_MemoryManage
-* - SystemHandler_BusFault
-* Output : None
-* Return : Fault address.
-*******************************************************************************/
-u32 NVIC_GetFaultAddress(u32 SystemHandler)
-{
- u32 faultaddress = 0x00;
- u32 tmp = 0x00;
-
- /* Check the parameters */
- assert_param(IS_FAULT_ADDRESS_SYSTEM_HANDLER(SystemHandler));
-
- tmp = (SystemHandler >> 0x16) & (u32)0x01;
-
- if (tmp == 0x00)
- {
- faultaddress = SCB->MMFAR;
- }
- else
- {
- faultaddress = SCB->BFAR;
- }
- return faultaddress;
-}
-
-/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/