用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

282 lines
7.2 KiB

/**
******************************************************************************
* @file Project/STM32F10x_StdPeriph_Template/stm32f10x_it.c
* @author MCD Application Team
* @version V3.5.0
* @date 08-April-2011
* @brief Main Interrupt Service Routines.
* This file provides template for all exceptions handler and
* peripherals interrupt service routine.
******************************************************************************
* @attention
*
* 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 CONSEQUENTI
AL 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.
*
* <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_it.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
#include "dmpKey.h"
#include "dmpmap.h"
#include "usart.h"
#include "oled.h"
#include "app.h"
#include "usart.h"
/** @addtogroup STM32F10x_StdPeriph_Template
* @{
*/
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/******************************************************************************/
/* Cortex-M3 Processor Exceptions Handlers */
/******************************************************************************/
//---------<EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD>գģͣ<EFBFBD><EFBFBD>ж<EFBFBD>---------------
extern uint8_t parameter[48];
union dataConvert PAValue;
union dataConvert IAValue;
union dataConvert DAValue;
union dataConvert PBValue;
union dataConvert IBValue;
union dataConvert DBValue;
extern AnglePid AnglePidA;
extern SpeedPid SpeedPidA;
extern TurnPid TurnPidA;
extern int Movement;
extern int DeathArea;
void DMA1_Channel5_IRQHandler(void) //
{
uint8_t i;
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
DMA_ClearFlag(DMA1_FLAG_TC5);
DMA_ClearITPendingBit(DMA1_IT_TC5);
for(i=0;i<8;i++)
{
PAValue.table[i] = parameter[i];
}
for(i=0;i<8;i++)
{
IAValue.table[i] = parameter[8+i];
}
for(i=0;i<8;i++)
{
DAValue.table[i] = parameter[i+16];
}
for(i=0;i<8;i++)
{
PBValue.table[i] = parameter[i+24];
}
for(i=0;i<8;i++)
{
IBValue.table[i] = parameter[32+i];
}
for(i=0;i<8;i++)
{
DBValue.table[i] = parameter[i+40];
}
// AnglePidA.Kp = PAValue.num;AnglePidA.Ki = IAValue.num;AnglePidA.Kd = DAValue.num;
// SpeedPidA.Kp = PBValue.num;SpeedPidA.Ki = IBValue.num;SpeedPidA.Kd = DBValue.num;
TurnPidA.Kp = PAValue.num;Movement = IAValue.num;TurnPidA.Kd=DAValue.num;
TurnPidA.SetSpeedSum = PBValue.num;
// DeathArea = PAValue.num*10;
}
MPU6050_DMP_PACKET mpu6050_info;
int speed2,speed4;
void EXTI4_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line4)==SET)
{
EXTI_ClearITPendingBit(EXTI_Line4);
}
}
void TIM1_UP_IRQHandler(void)
{
int balance=0;
int speedout=0;
int turn=0;
int outputpwm2,outputpwm4;
int diffSpeedSum;
static uint8_t SpeedControlPeriod=0;
static uint8_t TurnControlPeriod=0;
static int Speed2Sum=0,Speed4Sum=0;
if(TIM_GetFlagStatus(TIM1, TIM_FLAG_Update)==SET)
{
mpu_dmp_get_data(&mpu6050_info);
if(myabs(mpu6050_info.pitch)<55) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ž<EFBFBD><EFBFBD><EFBFBD>PID<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
/*-------------------<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>---------------------*/
SpeedControlPeriod++;
speedout = SpeedControlOutput(&SpeedPidA,SpeedControlPeriod);
TurnControlPeriod++;
turn = TurnControlOutput(&TurnPidA,TurnControlPeriod);
balance = AnglePID_Realize(&AnglePidA,mpu6050_info.pitch,mpu6050_info.gyro[1]); //<EFBFBD>Ƕȿ<EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5ms
if(SpeedControlPeriod >= SPEED_CONTROL_PERIOD) //<EFBFBD>ٶȺ<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>100ms
{
SpeedControlPeriod = 0;
TurnControlPeriod = 0;
speed2 = MOTOR2_GetSpeed(); //<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
speed4 = MOTOR4_GetSpeed();
Speed2Sum += speed2; Speed4Sum += speed4;
diffSpeedSum = Speed2Sum - Speed4Sum;
TurnPID_Realize(&TurnPidA,diffSpeedSum,mpu6050_info.gyro[2]);
SpeedPID_Realize(&SpeedPidA,speed2+speed4);
}
outputpwm2 = balance + speedout + turn;
outputpwm4 = balance + speedout - turn;
MotorOutput(outputpwm2,outputpwm4);
}
else
{
MotorOutput(0,0);
}
TIM_ClearITPendingBit(TIM1, TIM_IT_Update);//
}
}
/**
* @brief This function handles NMI exception.
* @param None
* @retval None
*/
void NMI_Handler(void)
{
}
/**
* @brief This function handles Hard Fault exception.
* @param None
* @retval None
*/
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
}
}
/**
* @brief This function handles Memory Manage exception.
* @param None
* @retval None
*/
void MemManage_Handler(void)
{
/* Go to infinite loop when Memory Manage exception occurs */
while (1)
{
}
}
/**
* @brief This function handles Bus Fault exception.
* @param None
* @retval None
*/
void BusFault_Handler(void)
{
/* Go to infinite loop when Bus Fault exception occurs */
while (1)
{
}
}
/**
* @brief This function handles Usage Fault exception.
* @param None
* @retval None
*/
void UsageFault_Handler(void)
{
/* Go to infinite loop when Usage Fault exception occurs */
while (1)
{
}
}
/**
* @brief This function handles SVCall exception.
* @param None
* @retval None
*/
void SVC_Handler(void)
{
}
/**
* @brief This function handles Debug Monitor exception.
* @param None
* @retval None
*/
void DebugMon_Handler(void)
{
}
/**
* @brief This function handles PendSVC exception.
* @param None
* @retval None
*/
void PendSV_Handler(void)
{
}
/**
* @brief This function handles SysTick Handler.
* @param None
* @retval None
*/
void SysTick_Handler(void)
{
}
/******************************************************************************/
/* STM32F10x 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_stm32f10x_xx.s). */
/******************************************************************************/
/**
* @brief This function handles PPP interrupt request.
* @param None
* @retval None
*/
/*void PPP_IRQHandler(void)
{
}*/
/**
* @}
*/
/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/