| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- /**
- ******************************************************************************
- * @file stm32f10x_mc_it.c
- * @author Motor Control SDK Team, ST Microelectronics
- * @brief Main Interrupt Service Routines.
- * This file provides exceptions handler and peripherals interrupt
- * service routine related to Motor Control for the STM32F1 Family.
- ******************************************************************************
- * @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
- *
- ******************************************************************************
- * @ingroup STM32F10x_IRQ_Handlers
- */
- /* Includes ------------------------------------------------------------------*/
- #include "mc_type.h"
- #include "mc_tasks.h"
- #include "ui_task.h"
- #include "parameters_conversion.h"
- #include "motorcontrol.h"
- /* USER CODE BEGIN Includes */
- /* USER CODE END Includes */
- /** @addtogroup MCSDK
- * @{
- */
- /** @addtogroup STM32F10x_IRQ_Handlers STM32F10x IRQ Handlers
- * @{
- */
- /* USER CODE BEGIN PRIVATE */
- /* Private typedef -----------------------------------------------------------*/
- /* Private define ------------------------------------------------------------*/
- #define SYSTICK_DIVIDER (SYS_TICK_FREQUENCY/1000)
- /* Private macro -------------------------------------------------------------*/
- /* Private variables ---------------------------------------------------------*/
- /* Private function prototypes -----------------------------------------------*/
- /* Private functions ---------------------------------------------------------*/
- /* USER CODE END PRIVATE */
- /* Public prototypes of IRQ handlers called from assembly code ---------------*/
- void ADC1_2_IRQHandler(void);
- void TIMx_UP_M1_IRQHandler(void);
- void DMAx_R1_M1_IRQHandler(void);
- void TIMx_BRK_M1_IRQHandler(void);
- void SPD_TIM_M1_IRQHandler(void);
- void USART_IRQHandler(void);
- void HardFault_Handler(void);
- void SysTick_Handler(void);
- void PFC_TIM_IRQHandler(void);
- void EXTI9_5_IRQHandler (void);
- /**
- * @brief This function handles ADC1/ADC2 interrupt request.
- * @param None
- * @retval None
- */
- void ADC1_2_IRQHandler(void)
- {
- /* USER CODE BEGIN ADC1_2_IRQn 0 */
- /* USER CODE END ADC1_2_IRQn 0 */
- ADC1->SR &= ~(uint32_t)(LL_ADC_FLAG_JEOS | LL_ADC_FLAG_JSTRT);
- TSK_HighFrequencyTask(); /*GUI, this section is present only if DAC is disabled*/
- /* USER CODE BEGIN ADC1_2_IRQn 1 */
- /* USER CODE END ADC1_2_IRQn 1 */
- }
- /**
- * @brief This function handles first motor TIMx Update interrupt request.
- * @param None
- * @retval None
- */
- void TIMx_UP_M1_IRQHandler(void)
- {
- /* USER CODE BEGIN TIMx_UP_M1_IRQn 0 */
- /* USER CODE END TIMx_UP_M1_IRQn 0 */
- LL_TIM_ClearFlag_UPDATE(TIM1);
- R3_2_TIMx_UP_IRQHandler(&PWM_Handle_M1);
- /* USER CODE BEGIN TIMx_UP_M1_IRQn 1 */
- /* USER CODE END TIMx_UP_M1_IRQn 1 */
- }
- /**
- * @brief This function handles first motor BRK interrupt.
- * @param None
- * @retval None
- */
- void TIMx_BRK_M1_IRQHandler(void)
- {
- /* USER CODE BEGIN TIMx_BRK_M1_IRQn 0 */
- /* USER CODE END TIMx_BRK_M1_IRQn 0 */
- if (LL_TIM_IsActiveFlag_BRK(PWM_Handle_M1.pParams_str->TIMx))
- {
- LL_TIM_ClearFlag_BRK(PWM_Handle_M1.pParams_str->TIMx);
- R3_2_BRK_IRQHandler(&PWM_Handle_M1);
- }
- /* Systick is not executed due low priority so is necessary to call MC_Scheduler here.*/
- MC_Scheduler();
- /* USER CODE BEGIN TIMx_BRK_M1_IRQn 1 */
- /* USER CODE END TIMx_BRK_M1_IRQn 1 */
- }
- /**
- * @brief This function handles TIMx global interrupt request for M1 Speed Sensor.
- * @param None
- * @retval None
- */
- void SPD_TIM_M1_IRQHandler(void)
- {
- /* USER CODE BEGIN SPD_TIM_M1_IRQn 0 */
- /* USER CODE END SPD_TIM_M1_IRQn 0 */
- /* HALL Timer Update IT always enabled, no need to check enable UPDATE state */
- if (LL_TIM_IsActiveFlag_UPDATE(HALL_M1.TIMx))
- {
- LL_TIM_ClearFlag_UPDATE(HALL_M1.TIMx);
- HALL_TIMx_UP_IRQHandler(&HALL_M1);
- /* USER CODE BEGIN M1 HALL_Update */
- /* USER CODE END M1 HALL_Update */
- }
- else
- {
- /* Nothing to do */
- }
- /* HALL Timer CC1 IT always enabled, no need to check enable CC1 state */
- if (LL_TIM_IsActiveFlag_CC1 (HALL_M1.TIMx))
- {
- LL_TIM_ClearFlag_CC1(HALL_M1.TIMx);
- HALL_TIMx_CC_IRQHandler(&HALL_M1);
- /* USER CODE BEGIN M1 HALL_CC1 */
- /* USER CODE END M1 HALL_CC1 */
- }
- else
- {
- /* Nothing to do */
- }
- /* USER CODE BEGIN SPD_TIM_M1_IRQn 1 */
- /* USER CODE END SPD_TIM_M1_IRQn 1 */
- }
- /*Start here***********************************************************/
- /*GUI, this section is present only if serial communication is enabled*/
- /**
- * @brief This function handles USART interrupt request.
- * @param None
- * @retval None
- */
- void USART_IRQHandler(void)
- {
- /* USER CODE BEGIN USART_IRQn 0 */
- /* USER CODE END USART_IRQn 0 */
- uint16_t hUSART_SR = pUSART.USARTx->SR;
- if (hUSART_SR & USART_SR_ORE) /* Overrun error occurs before SR access */
- {
- /* Send Overrun message */
- UFCP_OVR_IRQ_Handler(&pUSART);
- LL_USART_ClearFlag_ORE(pUSART.USARTx); /* Clear overrun flag */
- UI_SerialCommunicationTimeOutStop();
- /* USER CODE BEGIN USART_ORE */
- /* USER CODE END USART_ORE */
- }
- if (hUSART_SR & USART_SR_RXNE) /* Valid data received */
- {
- uint16_t retVal;
- retVal = *(uint16_t*)UFCP_RX_IRQ_Handler(&pUSART,LL_USART_ReceiveData8(pUSART.USARTx)); /* Flag 0 = RX */
- if (retVal == 1)
- {
- UI_SerialCommunicationTimeOutStart();
- }
- if (retVal == 2)
- {
- UI_SerialCommunicationTimeOutStop();
- }
- /* USER CODE BEGIN USART_RXNE */
- /* USER CODE END USART_RXNE */
- }
- if(LL_USART_IsActiveFlag_TXE(pUSART.USARTx))
- {
- UFCP_TX_IRQ_Handler(&pUSART); /* Flag 1 = TX */
- /* USER CODE BEGIN USART_TXE */
- /* USER CODE END USART_TXE */
- }
- /* USER CODE BEGIN USART_IRQn 1 */
- /* USER CODE END USART_IRQn 1 */
- }
- /**
- * @brief This function handles Hard Fault exception.
- * @param None
- * @retval None
- */
- void HardFault_Handler(void)
- {
- /* USER CODE BEGIN HardFault_IRQn 0 */
- /* USER CODE END HardFault_IRQn 0 */
- TSK_HardwareFaultTask();
- /* Go to infinite loop when Hard Fault exception occurs */
- while (1)
- {
- {
- if (LL_USART_IsActiveFlag_ORE(pUSART.USARTx)) /* Overrun error occurs */
- {
- /* Send Overrun message */
- UFCP_OVR_IRQ_Handler(&pUSART);
- LL_USART_ClearFlag_ORE(pUSART.USARTx); /* Clear overrun flag */
- UI_SerialCommunicationTimeOutStop();
- }
- if (LL_USART_IsActiveFlag_TXE(pUSART.USARTx))
- {
- UFCP_TX_IRQ_Handler(&pUSART);
- }
- if (LL_USART_IsActiveFlag_RXNE(pUSART.USARTx)) /* Valid data have been received */
- {
- uint16_t retVal;
- retVal = *(uint16_t*)(UFCP_RX_IRQ_Handler(&pUSART,LL_USART_ReceiveData8(pUSART.USARTx)));
- if (retVal == 1)
- {
- UI_SerialCommunicationTimeOutStart();
- }
- if (retVal == 2)
- {
- UI_SerialCommunicationTimeOutStop();
- }
- }
- else
- {
- }
- }
- }
- /* USER CODE BEGIN HardFault_IRQn 1 */
- /* USER CODE END HardFault_IRQn 1 */
- }
- void SysTick_Handler(void)
- {
- #ifdef MC_HAL_IS_USED
- static uint8_t SystickDividerCounter = SYSTICK_DIVIDER;
- /* USER CODE BEGIN SysTick_IRQn 0 */
- /* USER CODE END SysTick_IRQn 0 */
- if (SystickDividerCounter == SYSTICK_DIVIDER)
- {
- HAL_IncTick();
- HAL_SYSTICK_IRQHandler();
- SystickDividerCounter = 0;
- }
- SystickDividerCounter ++;
- #endif /* MC_HAL_IS_USED */
- /* USER CODE BEGIN SysTick_IRQn 1 */
- /* USER CODE END SysTick_IRQn 1 */
- MC_RunMotorControlTasks();
- /* USER CODE BEGIN SysTick_IRQn 2 */
- /* USER CODE END SysTick_IRQn 2 */
- }
- /* USER CODE BEGIN 1 */
- /* USER CODE END 1 */
- /**
- * @}
- */
- /**
- * @}
- */
- /******************* (C) COPYRIGHT 2019 STMicroelectronics *****END OF FILE****/
|