diff options
Diffstat (limited to 'thirdparty/STM32_USB-FS-Device_Lib_V4.0.0/Projects/Composite_Example/src/stm32_it.c')
-rw-r--r-- | thirdparty/STM32_USB-FS-Device_Lib_V4.0.0/Projects/Composite_Example/src/stm32_it.c | 426 |
1 files changed, 426 insertions, 0 deletions
diff --git a/thirdparty/STM32_USB-FS-Device_Lib_V4.0.0/Projects/Composite_Example/src/stm32_it.c b/thirdparty/STM32_USB-FS-Device_Lib_V4.0.0/Projects/Composite_Example/src/stm32_it.c new file mode 100644 index 0000000..a2ee2d8 --- /dev/null +++ b/thirdparty/STM32_USB-FS-Device_Lib_V4.0.0/Projects/Composite_Example/src/stm32_it.c @@ -0,0 +1,426 @@ +/** + ****************************************************************************** + * @file stm32_it.c + * @author MCD Application Team + * @version V4.0.0 + * @date 21-January-2013 + * @brief Main Interrupt Service Routines. + * This file provides template for all exceptions handler and peripherals + * interrupt service routine. + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT 2013 STMicroelectronics</center></h2> + * + * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); + * You may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.st.com/software_license_agreement_liberty_v2 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ****************************************************************************** + */ + + +/* Includes ------------------------------------------------------------------*/ + +#include "stm32_it.h" +#include "usb_istr.h" +#include "usb_lib.h" +#include "usb_pwr.h" +#include "hw_config.h" + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +__IO uint8_t Send_Buffer[2]; +extern __IO uint8_t PrevXferComplete; +extern uint32_t ADC_ConvertedValueX; +extern uint32_t ADC_ConvertedValueX_1; +extern __IO uint32_t TimingDelay; + +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + +/******************************************************************************/ +/* Cortex-M Processor Exceptions Handlers */ +/******************************************************************************/ + +/******************************************************************************* +* Function Name : NMI_Handler +* Description : This function handles NMI exception. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void NMI_Handler(void) +{ +} + +/******************************************************************************* +* Function Name : HardFault_Handler +* Description : This function handles Hard Fault exception. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void HardFault_Handler(void) +{ + /* Go to infinite loop when Hard Fault exception occurs */ + while (1) + { + } +} + +/******************************************************************************* +* Function Name : MemManage_Handler +* Description : This function handles Memory Manage exception. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void MemManage_Handler(void) +{ + /* Go to infinite loop when Memory Manage exception occurs */ + while (1) + { + } +} + +/******************************************************************************* +* Function Name : BusFault_Handler +* Description : This function handles Bus Fault exception. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void BusFault_Handler(void) +{ + /* Go to infinite loop when Bus Fault exception occurs */ + while (1) + { + } +} + +/******************************************************************************* +* Function Name : UsageFault_Handler +* Description : This function handles Usage Fault exception. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void UsageFault_Handler(void) +{ + /* Go to infinite loop when Usage Fault exception occurs */ + while (1) + { + } +} + +/******************************************************************************* +* Function Name : SVC_Handler +* Description : This function handles SVCall exception. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void SVC_Handler(void) +{ +} + +/******************************************************************************* +* Function Name : DebugMon_Handler +* Description : This function handles Debug Monitor exception. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void DebugMon_Handler(void) +{ +} + +/******************************************************************************* +* Function Name : PendSV_Handler +* Description : This function handles PendSVC exception. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void PendSV_Handler(void) +{ +} + +/******************************************************************************* +* Function Name : SysTick_Handler +* Description : This function handles SysTick Handler. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void SysTick_Handler(void) +{ + TimingDelay--; +} + +/******************************************************************************/ +/* STM32 Peripherals Interrupt Handlers */ +/******************************************************************************/ + +/******************************************************************************* +* Function Name : USB_IRQHandler +* Description : This function handles USB Low Priority interrupts +* requests. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) || defined (STM32F37X) +void USB_LP_IRQHandler(void) +#else +void USB_LP_CAN1_RX0_IRQHandler(void) +#endif +{ + USB_Istr(); +} + +#if defined(STM32L1XX_MD) +/******************************************************************************* +* Function Name : EXTI15_10_IRQHandler +* Description : This function handles External lines 15 to 10 interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void EXTI15_10_IRQHandler(void) +{ + /* Check on the RIGHT button */ + if(EXTI_GetITStatus(RIGHT_BUTTON_EXTI_LINE) != RESET) + { + if ((PrevXferComplete) && (bDeviceState == CONFIGURED)) + { + Send_Buffer[0] = 0x05; + + if (STM_EVAL_PBGetState(Button_RIGHT) == Bit_RESET) + { + Send_Buffer[1] = 0x01; + } + else + { + Send_Buffer[1] = 0x00; + } + + /* Write the descriptor through the endpoint */ + USB_SIL_Write(EP1_IN, (uint8_t*) Send_Buffer, 2); + + SetEPTxValid(ENDP1); + + PrevXferComplete = 0; + } + /* Clear the EXTI line pending bit */ + EXTI_ClearITPendingBit(RIGHT_BUTTON_EXTI_LINE); + } + + /* Check on the LEFT button */ + if(EXTI_GetITStatus(LEFT_BUTTON_EXTI_LINE) != RESET) + { + if ((PrevXferComplete) && (bDeviceState == CONFIGURED)) + { + Send_Buffer[0] = 0x06; + + if (STM_EVAL_PBGetState(Button_LEFT) == Bit_RESET) + { + Send_Buffer[1] = 0x01; + } + else + { + Send_Buffer[1] = 0x00; + } + + /* Write the descriptor through the endpoint */ + USB_SIL_Write(EP1_IN, (uint8_t*) Send_Buffer, 2); + + SetEPTxValid(ENDP1); + + PrevXferComplete = 0; + } + /* Clear the EXTI line pending bit */ + EXTI_ClearITPendingBit(LEFT_BUTTON_EXTI_LINE); + } +} +#endif +/******************************************************************************* +* Function Name : DMA1_Channel1_IRQHandler +* Description : This function handles DMA1 Channel 1 interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void DMA1_Channel1_IRQHandler(void) +{ + Send_Buffer[0] = 0x07; + + if((ADC_ConvertedValueX >>4) - (ADC_ConvertedValueX_1 >>4) > 4) + { + if ((PrevXferComplete) && (bDeviceState == CONFIGURED)) + { + Send_Buffer[1] = (uint8_t)(ADC_ConvertedValueX >>4); + + /* Write the descriptor through the endpoint */ + USB_SIL_Write(EP1_IN, (uint8_t*) Send_Buffer, 2); + SetEPTxValid(ENDP1); + ADC_ConvertedValueX_1 = ADC_ConvertedValueX; + PrevXferComplete = 0; + } + } + + DMA_ClearFlag(DMA1_FLAG_TC1); +} + +/******************************************************************************* +* Function Name : EXTI_IRQHandler +* Description : This function handles External lines interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) +void EXTI0_IRQHandler(void) +#elif defined (STM32F37X) +void EXTI2_TS_IRQHandler(void) +#else +void EXTI9_5_IRQHandler(void) +#endif +{ + if(EXTI_GetITStatus(KEY_BUTTON_EXTI_LINE) != RESET) + { + if ((PrevXferComplete) && (bDeviceState == CONFIGURED)) + { + Send_Buffer[0] = 0x05; +#if defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) + if (!STM_EVAL_PBGetState(Button_KEY) == Bit_RESET) +#else + if (STM_EVAL_PBGetState(Button_KEY) == Bit_RESET) +#endif + { + Send_Buffer[1] = 0x01; + } + else + { + Send_Buffer[1] = 0x00; + } + + /* Write the descriptor through the endpoint */ + USB_SIL_Write(EP1_IN, (uint8_t*) Send_Buffer, 2); + SetEPTxValid(ENDP1); + PrevXferComplete = 0; + } + /* Clear the EXTI line pending bit */ + EXTI_ClearITPendingBit(KEY_BUTTON_EXTI_LINE); + } +} +#if !defined(STM32L1XX_MD) && !defined(STM32L1XX_HD) && !defined(STM32L1XX_MD_PLUS)&& ! defined (STM32F37X) && ! defined (STM32F30X) +/******************************************************************************* +* Function Name : EXTI15_10_IRQHandler +* Description : This function handles External lines 15 to 10 interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void EXTI15_10_IRQHandler(void) +{ + if(EXTI_GetITStatus(TAMPER_BUTTON_EXTI_LINE) != RESET) + { + if ((PrevXferComplete) && (bDeviceState == CONFIGURED)) + { + Send_Buffer[0] = 0x06; + + if (STM_EVAL_PBGetState(Button_TAMPER) == Bit_RESET) + { + Send_Buffer[1] = 0x01; + } + else + { + Send_Buffer[1] = 0x00; + } + + /* Write the descriptor through the endpoint */ + USB_SIL_Write(EP1_IN, (uint8_t*) Send_Buffer, 2); + + SetEPTxValid(ENDP1); + + PrevXferComplete = 0; + } + /* Clear the EXTI line 13 pending bit */ + EXTI_ClearITPendingBit(TAMPER_BUTTON_EXTI_LINE); + } +} + +#endif /*STM32L1XX_HD*/ + +#if defined(STM32F10X_HD) || defined(STM32F10X_XL) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) +/******************************************************************************* +* Function Name : SDIO_IRQHandler +* Description : This function handles SDIO global interrupt request. +* requests. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void SDIO_IRQHandler(void) +{ + /* Process All SDIO Interrupt Sources */ + SD_ProcessIRQSrc(); + +} + +void SD_SDIO_DMA_IRQHANDLER(void) +{ + /* Process DMA2 Stream3 or DMA2 Stream6 Interrupt Sources */ + SD_ProcessDMAIRQ(); +} + +#endif /* STM32F10X_HD | STM32F10X_XL*/ + +/******************************************************************************* +* Function Name : USB_FS_WKUP_IRQHandler +* Description : This function handles USB WakeUp interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ + +#if defined(STM32L1XX_MD) || defined(STM32L1XX_HD)|| defined(STM32L1XX_MD_PLUS) +void USB_FS_WKUP_IRQHandler(void) +#else +void USBWakeUp_IRQHandler(void) +#endif +{ + EXTI_ClearITPendingBit(EXTI_Line18); +} + +/******************************************************************************/ +/* STM32 Peripherals Interrupt Handlers */ +/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ +/* available peripheral interrupt handler's name please refer to the startup */ +/* file (startup_stm32xxx.s). */ +/******************************************************************************/ + +/******************************************************************************* +* Function Name : PPP_IRQHandler +* Description : This function handles PPP interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +/*void PPP_IRQHandler(void) +{ +}*/ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |