FX1N/FX1S1N2N学习板底层源码/main/stm32f10x_it.c

1982 lines
55 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
* File Name : stm32f10x_it.c
* Author : MCD Application Team
* Version : V2.0.3
* Date : 09/22/2008
* Description : Main Interrupt Service Routines.
* This file provides template for all exceptions handler
* and peripherals interrupt service routine.
********************************************************************************
* 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_it.h"
#include "RTC_Time.h"
#define TIM2_CR1 (*(volatile unsigned long *)0x40000000)//控制寄存器1
#define ICx_FILTER (u8) 6 // 6<-> 670nsec
#define PERIPH_BASE ((u32)0x40000000)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define GPIOA_BASE (APB2PERIPH_BASE + 0x0800)
/***********GPIOA外设寄存器地址映射********************/
#define GPIOA_CRL (*(volatile unsigned long *) (GPIOA_BASE + 0x00))
#define GPIOA_CRH (*(volatile unsigned long *) (GPIOA_BASE + 0x04))
#define GPIOA_IDR (*(volatile unsigned long *) (GPIOA_BASE + 0x08))
#define GPIOA_ODR (*(volatile unsigned long *) (GPIOA_BASE + 0x0C))
#define GPIOA_BSRR (*(volatile unsigned long *) (GPIOA_BASE + 0x10))
#define GPIOA_BRR (*(volatile unsigned long *) (GPIOA_BASE + 0x14))
#define GPIOA_LCKR (*(volatile unsigned long *) (GPIOA_BASE + 0x18))
extern TIM_OCInitTypeDef TIM_OCInitStructure;
extern TIM_ICInitTypeDef TIM_ICInitStructure;
extern GPIO_InitTypeDef GPIO_InitStructure;
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
extern TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
extern u8 v1[], v3[], u0en, u1en;
extern u8 TxBuffer1[];
extern u8 TxBuffer3[];
extern vu8 TxCounter1;
extern vu8 TxCounter3;
extern vu8 vk, vk3;
extern u8 Send1_Size;
extern u8 Send3_Size;
extern u8 ST_Scan3V;
extern u16 Data;
extern u16 C235P, cy;
extern u8 CX0P, CX1P, CX2P, CX3P, CX4P, CX5P, CX6P, CX7P;
extern u16 CXD[8];
extern long cth[56];
extern u8 C251P, CANP;
extern long C251CNT, pus_cnt0, pus_cnt1, pus0, pus1;
extern u8 C237P, C238P, C239P, C240P, C245P, C248P, C250P, dir0, dir1;
extern u16 sy237, sy238, sy239, sy240, sy248;
extern long C251TS[6];
extern u8 dhs_used[6], ytemp[80];
extern u8 CTX[6];
extern u16 CYM[6], CYMK[6];
extern unsigned char m[1536], m8000[256];
extern short int d[]; //<2F>D积存器
extern u8 s[1001];
extern u32 pusy0, pusy1;
extern long temps1, temps2, div_cps1, div_cps2;
extern u8 ps1, ps2, enix, down_lad, tscok, CMUT, u485;
extern unsigned int IPBI[50];
extern u16 IPBJ[50], x[];
extern unsigned char ipust;
extern struct tm time_now;
extern u8(*fuc_b[256])(u16);
extern u8(*fuc_f1[256])(u16);
extern u8(*fuc_f2[256])(u16);
extern u8(*fuc_f3[256])(u16);
extern const unsigned char lad[];
void TimingDelay_Decrement(void);
void write_m(unsigned int i, unsigned char data);
unsigned char read_m(unsigned int i);
void sety(unsigned int i);
void rsty(unsigned int i);
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
/*******************************************************************************
* Function Name : NMIException
* Description : This function handles NMI exception.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void NMIException(void){}
/*******************************************************************************
* Function Name : HardFaultException
* Description : This function handles Hard Fault exception.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void HardFaultException(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1){}
}
/*******************************************************************************
* Function Name : MemManageException
* Description : This function handles Memory Manage exception.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void MemManageException(void)
{
/* Go to infinite loop when Memory Manage exception occurs */
while (1){}
}
/*******************************************************************************
* Function Name : BusFaultException
* Description : This function handles Bus Fault exception.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void BusFaultException(void)
{
/* Go to infinite loop when Bus Fault exception occurs */
while (1){}
}
/*******************************************************************************
* Function Name : UsageFaultException
* Description : This function handles Usage Fault exception.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void UsageFaultException(void)
{
/* Go to infinite loop when Usage Fault exception occurs */
while (1){}
}
/*******************************************************************************
* Function Name : DebugMonitor
* Description : This function handles Debug Monitor exception.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DebugMonitor(void){}
/*******************************************************************************
* Function Name : SVCHandler
* Description : This function handles SVCall exception.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SVCHandler(void){}
/*******************************************************************************
* Function Name : PendSVC
* Description : This function handles PendSVC exception.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void PendSVC(void){}
/*******************************************************************************
* Function Name : SysTickHandler
* Description : This function handles SysTick Handler.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SysTickHandler(void)
{
TimingDelay_Decrement();
}
/*******************************************************************************
* Function Name : WWDG_IRQHandler
* Description : This function handles WWDG interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void WWDG_IRQHandler(void){}
/*******************************************************************************
* Function Name : PVD_IRQHandler
* Description : This function handles PVD interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void PVD_IRQHandler(void){}
/*******************************************************************************
* Function Name : TAMPER_IRQHandler
* Description : This function handles Tamper interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TAMPER_IRQHandler(void){}
/*******************************************************************************
* Function Name : RTC_IRQHandler
* Description : This function handles RTC global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void RTC_IRQHandler(void)
{
u8 set_clock = 0;
//struct tm time_now;
if (RTC_GetITStatus(RTC_IT_SEC) != RESET)
{
/* Clear the RTC Second interrupt */
RTC_ClearITPendingBit(RTC_IT_SEC);
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask();
time_now = Time_GetCalendarTime();
d[6019] = time_now.tm_wday;
d[6018] = time_now.tm_year;
d[6017] = time_now.tm_mon;
d[6016] = time_now.tm_mday;
/* Compute hours */
d[6015] = time_now.tm_hour;
/* Compute minutes */
d[6014] = time_now.tm_min;
/* Compute seconds */
d[6013] = time_now.tm_sec;
d[6017]++;
switch (d[6017])
{
case 2:
if (d[6016] > 28)
if (((d[6018] - 1992) % 4) != 0)
{
d[6016] = 1;
d[6017]++;
set_clock = 1;
}
if (d[6016] > 29)
if (((d[6018] - 1992) % 4) == 0)
{
d[6016] = 1;
d[6017]++;
set_clock = 1;
}
break;
case 4:
if (d[6016] == 31)
{
d[6016] = 1;
d[6017]++;
set_clock = 1;
}
break;
case 6:
if (d[6016] == 31)
{
d[6016] = 1;
d[6017]++;
set_clock = 1;
}
break;
case 9:
if (d[6016] == 31)
{
d[6016] = 1;
d[6017]++;
set_clock = 1;
}
break;
case 11:
if (d[6016] == 31)
{
d[6016] = 1;
d[6017]++;
set_clock = 1;
}
break;
}
if (set_clock == 1)
{
time_now.tm_year = d[6018];
time_now.tm_mon = d[6017] - 1;
time_now.tm_mday = d[6016];
time_now.tm_hour = d[6015];
time_now.tm_min = d[6014];
time_now.tm_sec = d[6013];
Time_SetCalendarTime(time_now);
}
set_clock = 0;
// Reset RTC Counter when Time is 23:59:59
/* if (TimeVar >= 0x00015180)
{
RTC_SetCounter(0x0);
//Wait until last write operation on RTC registers has finished
RTC_WaitForLastTask();
}
*/
}
}
/*******************************************************************************
* Function Name : FLASH_IRQHandler
* Description : This function handles Flash interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void FLASH_IRQHandler(void){}
/*******************************************************************************
* Function Name : RCC_IRQHandler
* Description : This function handles RCC interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void RCC_IRQHandler(void){}
/*******************************************************************************
* Function Name : EXTI0_IRQHandler
* Description : This function handles External interrupt Line 0 request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void EXTI0_IRQHandler(void)
{
u8 j;
u16 i;
if (EXTI_GetITStatus(EXTI_Line0) != RESET)
//判断中断发生来源
{
EXTI_ClearITPendingBit(EXTI_Line0);
if (m8000[50] == 0)
if (enix == 1)
if (tscok == 1)
for (j = 0; j < ipust; j++)
{
if (IPBJ[j] >= 0)
if (IPBJ[j] <= 1)
{
if (down_lad == 0)
if (x[79] == 0)
for (i = IPBI[j]; i < 16000; i = i + 2)
{
j = (*fuc_b[lad[i + 1]])(i);
if (j != 253)
{
i = i + j;
}
else
{
break;
}
}
}
}
}
}
/*******************************************************************************
* Function Name : EXTI1_IRQHandler
* Description : This function handles External interrupt Line 1 request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void EXTI1_IRQHandler(void)
{
u8 j;
u16 i;
if (EXTI_GetITStatus(EXTI_Line1) != RESET)
//判断中断发生来源
{
EXTI_ClearITPendingBit(EXTI_Line1);
if (m8000[51] == 0)
if (enix == 1)
if (tscok == 1)
for (j = 0; j < ipust; j++)
{
if (IPBJ[j] >= 100)
if (IPBJ[j] <= 101)
{
if (down_lad == 0)
if (x[79] == 0)
for (i = IPBI[j]; i < 16000; i = i + 2)
{
j = (*fuc_b[lad[i + 1]])(i);
if (j != 253)
{
i = i + j;
}
else
{
break;
}
}
}
}
}
}
/*******************************************************************************
* Function Name : EXTI2_IRQHandler
* Description : This function handles External interrupt Line 2 request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void EXTI2_IRQHandler(void){}
/*******************************************************************************
* Function Name : EXTI3_IRQHandler
* Description : This function handles External interrupt Line 3 request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void EXTI3_IRQHandler(void){}
/*******************************************************************************
* Function Name : EXTI4_IRQHandler
* Description : This function handles External interrupt Line 4 request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void EXTI4_IRQHandler(void)
{
u16 j, i, ityn = 0;
if (EXTI_GetITStatus(EXTI_Line4) != RESET)
//判断中断发生来源
{
EXTI_ClearITPendingBit(EXTI_Line4);
if ((m8000[55] == 0) && (enix == 1) && (tscok == 1))
for (j = 0; j < ipust; j++)
{
if (IPBJ[j] >= 500)
if (IPBJ[j] <= 501)
{
if (down_lad == 0)
if (x[79] == 0)
for (i = IPBI[j]; i < 16000; i = i + 2)
{
j = (*fuc_b[lad[i + 1]])(i);
if (j != 253)
{
i = i + j;
}
else
{
ityn = 1;
break;
}
}
}
}
if (ityn == 0)
{
if (CX5P)
d[CXD[5] + 1]++;
if (C240P == 1)
{
if (read_m(8200+sy240) == 0)
cth[sy240]++;
else
cth[sy240]--;
for (j = 0; j < 6; j++)
{
if (dhs_used[j] == 1)
if (CTX[j] == 40)
if (C251TS[j] == cth[sy240])
{
switch (CYM[j])
{
case 0x00:
s[CYMK[j]] = 1;
break;
case 0x01:
s[CYMK[j]] = 1;
break;
case 0x02:
s[CYMK[j]] = 1;
break;
case 0x03:
s[CYMK[j]] = 1;
break;
case 0x05:
sety(CYMK[j]);
break;
case 0x08:
write_m(CYMK[j], 1);
break;
case 0x09:
write_m(CYMK[j], 1);
break;
case 0x0a:
write_m(CYMK[j], 1);
break;
case 0x0b:
write_m(CYMK[j], 1);
break;
case 0x0c:
write_m(CYMK[j], 1);
break;
case 0x0d:
write_m(CYMK[j], 1);
break;
case 0x0f:
write_m(CYMK[j], 1);
break;
case 0x10:
s[CYMK[j]] = 0;
break;
case 0x11:
s[CYMK[j]] = 0;
break;
case 0x12:
s[CYMK[j]] = 0;
break;
case 0x13:
s[CYMK[j]] = 0;
break;
case 0x15:
rsty(CYMK[j]);
break;
case 0x18:
write_m(CYMK[j], 0);
break;
case 0x19:
write_m(CYMK[j], 0);
break;
case 0x1a:
write_m(CYMK[j], 0);
break;
case 0x1b:
write_m(CYMK[j], 0);
break;
case 0x1c:
write_m(CYMK[j], 0);
break;
case 0x1d:
write_m(CYMK[j], 0);
break;
case 0x1f:
write_m(CYMK[j], 0);
break;
}
}
}
}
}
}
}
/*******************************************************************************
* 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){}
/*******************************************************************************
* Function Name : DMA1_Channel2_IRQHandler
* Description : This function handles DMA1 Channel 2 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA1_Channel2_IRQHandler(void){}
/*******************************************************************************
* Function Name : DMA1_Channel3_IRQHandler
* Description : This function handles DMA1 Channel 3 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA1_Channel3_IRQHandler(void){}
/*******************************************************************************
* Function Name : DMA1_Channel4_IRQHandler
* Description : This function handles DMA1 Channel 4 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA1_Channel4_IRQHandler(void){}
/*******************************************************************************
* Function Name : DMA1_Channel5_IRQHandler
* Description : This function handles DMA1 Channel 5 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA1_Channel5_IRQHandler(void){}
/*******************************************************************************
* Function Name : DMA1_Channel6_IRQHandler
* Description : This function handles DMA1 Channel 6 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA1_Channel6_IRQHandler(void){}
/*******************************************************************************
* Function Name : DMA1_Channel7_IRQHandler
* Description : This function handles DMA1 Channel 7 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA1_Channel7_IRQHandler(void){}
/*******************************************************************************
* Function Name : ADC1_2_IRQHandler
* Description : This function handles ADC1 and ADC2 global interrupts requests.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void ADC1_2_IRQHandler(void){}
/*******************************************************************************
* Function Name : USB_HP_CAN_TX_IRQHandler
* Description : This function handles USB High Priority or CAN TX interrupts
* requests.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void USB_HP_CAN_TX_IRQHandler(void){}
/*******************************************************************************
* Function Name : USB_LP_CAN_RX0_IRQHandler
* Description : This function handles USB Low Priority or CAN RX0 interrupts
* requests.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void USB_LP_CAN_RX0_IRQHandler(void)
{
u8 j;
u32 canbf;
// u8 TransmitMailbox=0;
CanRxMsg RxMessage;
CanTxMsg TxMessage;
RxMessage.StdId = 0x00;
RxMessage.ExtId = 0x00;
RxMessage.IDE = 0;
RxMessage.DLC = 0;
RxMessage.FMI = 0;
RxMessage.Data[0] = 0x00;
RxMessage.Data[1] = 0x00;
CAN_Receive(CAN_FIFO0, &RxMessage);
CANP = 0;
// if((RxMessage.ExtId==0x1230) && (RxMessage.IDE==CAN_ID_EXT)&& (RxMessage.DLC==8) )
if (d[6103] == 1)
//主机
{
canbf = RxMessage.StdId >> 4;
if (canbf <= 19)
{
for (j = 0; j < 8; j = j + 2)
d[2000+canbf * 50+(RxMessage.StdId &0x00000007) *4+j / 2] =
(RxMessage.Data[j] | (RxMessage.Data[j + 1] << 8));
}
}
else
//从机
{
for (j = 0; j < 8; j = j + 2)
d[2000+(RxMessage.StdId &0x00000007) *4+j / 2] = (RxMessage.Data[j] |
(RxMessage.Data[j + 1] << 8));
canbf = RxMessage.StdId &0x00000007;
TxMessage.StdId = RxMessage.StdId | 0x00000008;
// 发回主机的地址与发来的地址做个区别第3位为1发来的为0
TxMessage.ExtId = 0x0000;
TxMessage.IDE = CAN_ID_STD;
TxMessage.RTR = CAN_RTR_DATA;
TxMessage.DLC = 8;
for (j = 0; j < 8; j = j + 2)
{
TxMessage.Data[j] = d[1000+canbf * 4+j / 2];
TxMessage.Data[j + 1] = d[1000+canbf * 4+j / 2] / 256;
}
// TransmitMailbox = CAN_Transmit(&TxMessage);
CAN_Transmit(&TxMessage);
}
}
/*******************************************************************************
* Function Name : CAN_RX1_IRQHandler
* Description : This function handles CAN RX1 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void CAN_RX1_IRQHandler(void){}
/*******************************************************************************
* Function Name : CAN_SCE_IRQHandler
* Description : This function handles CAN SCE interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void CAN_SCE_IRQHandler(void){}
/*******************************************************************************
* Function Name : EXTI9_5_IRQHandler
* Description : This function handles External lines 9 to 5 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void EXTI9_5_IRQHandler(void)
{
u16 j, i, ityn = 0;
if (EXTI_GetITStatus(EXTI_Line5) != RESET)
//判断中断发生来源
{
EXTI_ClearITPendingBit(EXTI_Line5);
if ((m8000[52] == 0) && (enix == 1) && (tscok == 1))
for (j = 0; j < ipust; j++)
{
if (IPBJ[j] >= 200)
if (IPBJ[j] <= 201)
{
if (down_lad == 0)
if (x[79] == 0)
for (i = IPBI[j]; i < 16000; i = i + 2)
{
j = (*fuc_b[lad[i + 1]])(i);
if (j != 253)
{
i = i + j;
}
else
{
ityn = 1;
break;
}
}
}
}
if (ityn == 0)
{
if (CX2P)
d[CXD[2] + 1]++;
if (C237P == 1)
if ((sy237 != 45) || ((sy237 == 45) && (C245P == 1)))
{
if (read_m(8200+sy237) == 0)
cth[sy237]++;
else
cth[sy237]--;
for (j = 0; j < 6; j++)
{
if (dhs_used[j] == 1)
if (CTX[j] == 7)
if (C251TS[j] == cth[sy237])
{
switch (CYM[j])
{
case 0x00:
s[CYMK[j]] = 1;
break;
case 0x01:
s[CYMK[j]] = 1;
break;
case 0x02:
s[CYMK[j]] = 1;
break;
case 0x03:
s[CYMK[j]] = 1;
break;
case 0x05:
sety(CYMK[j]);
break;
case 0x08:
write_m(CYMK[j], 1);
break;
case 0x09:
write_m(CYMK[j], 1);
break;
case 0x0a:
write_m(CYMK[j], 1);
break;
case 0x0b:
write_m(CYMK[j], 1);
break;
case 0x0c:
write_m(CYMK[j], 1);
break;
case 0x0d:
write_m(CYMK[j], 1);
break;
case 0x0f:
write_m(CYMK[j], 1);
break;
case 0x10:
s[CYMK[j]] = 0;
break;
case 0x11:
s[CYMK[j]] = 0;
break;
case 0x12:
s[CYMK[j]] = 0;
break;
case 0x13:
s[CYMK[j]] = 0;
break;
case 0x15:
rsty(CYMK[j]);
break;
case 0x18:
write_m(CYMK[j], 0);
break;
case 0x19:
write_m(CYMK[j], 0);
break;
case 0x1a:
write_m(CYMK[j], 0);
break;
case 0x1b:
write_m(CYMK[j], 0);
break;
case 0x1c:
write_m(CYMK[j], 0);
break;
case 0x1d:
write_m(CYMK[j], 0);
break;
case 0x1f:
write_m(CYMK[j], 0);
break;
}
}
}
}
}
}
ityn = 0;
if (EXTI_GetITStatus(EXTI_Line6) != RESET)
//判断中断发生来源
{
EXTI_ClearITPendingBit(EXTI_Line6);
if ((m8000[53] == 0) && (enix == 1) && (tscok == 1))
for (j = 0; j < ipust; j++)
{
if (IPBJ[j] >= 300)
if (IPBJ[j] <= 301)
{
if (down_lad == 0)
if (x[79] == 0)
for (i = IPBI[j]; i < 16000; i = i + 2)
{
j = (*fuc_b[lad[i + 1]])(i);
if (j != 253)
{
i = i + j;
}
else
{
ityn = 1;
break;
}
}
}
}
if (ityn == 0)
{
if (CX3P)
d[CXD[3] + 1]++;
if (C238P == 1)
{
if (read_m(8200+sy238) == 0)
cth[sy238]++;
else
cth[sy238]--;
for (j = 0; j < 6; j++)
{
if (dhs_used[j] == 1)
if (CTX[j] == 38)
if (C251TS[j] == cth[sy238])
{
switch (CYM[j])
{
case 0x00:
s[CYMK[j]] = 1;
break;
case 0x01:
s[CYMK[j]] = 1;
break;
case 0x02:
s[CYMK[j]] = 1;
break;
case 0x03:
s[CYMK[j]] = 1;
break;
case 0x05:
sety(CYMK[j]);
break;
case 0x08:
write_m(CYMK[j], 1);
break;
case 0x09:
write_m(CYMK[j], 1);
break;
case 0x0a:
write_m(CYMK[j], 1);
break;
case 0x0b:
write_m(CYMK[j], 1);
break;
case 0x0c:
write_m(CYMK[j], 1);
break;
case 0x0d:
write_m(CYMK[j], 1);
break;
case 0x0f:
write_m(CYMK[j], 1);
break;
case 0x10:
s[CYMK[j]] = 0;
break;
case 0x11:
s[CYMK[j]] = 0;
break;
case 0x12:
s[CYMK[j]] = 0;
break;
case 0x13:
s[CYMK[j]] = 0;
break;
case 0x15:
rsty(CYMK[j]);
break;
case 0x18:
write_m(CYMK[j], 0);
break;
case 0x19:
write_m(CYMK[j], 0);
break;
case 0x1a:
write_m(CYMK[j], 0);
break;
case 0x1b:
write_m(CYMK[j], 0);
break;
case 0x1c:
write_m(CYMK[j], 0);
break;
case 0x1d:
write_m(CYMK[j], 0);
break;
case 0x1f:
write_m(CYMK[j], 0);
break;
}
}
}
}
if (C248P == 1)
if ((sy248 == 48) || ((sy248 == 50) && (C250P == 1)))
{
cth[sy248]++;
for (j = 0; j < 6; j++)
{
if (dhs_used[j] == 1)
if (CTX[j] == 48)
if (C251TS[j] == cth[sy248])
{
switch (CYM[j])
{
case 0x00:
s[CYMK[j]] = 1;
break;
case 0x01:
s[CYMK[j]] = 1;
break;
case 0x02:
s[CYMK[j]] = 1;
break;
case 0x03:
s[CYMK[j]] = 1;
break;
case 0x05:
sety(CYMK[j]);
break;
case 0x08:
write_m(CYMK[j], 1);
break;
case 0x09:
write_m(CYMK[j], 1);
break;
case 0x0a:
write_m(CYMK[j], 1);
break;
case 0x0b:
write_m(CYMK[j], 1);
break;
case 0x0c:
write_m(CYMK[j], 1);
break;
case 0x0d:
write_m(CYMK[j], 1);
break;
case 0x0f:
write_m(CYMK[j], 1);
break;
case 0x10:
s[CYMK[j]] = 0;
break;
case 0x11:
s[CYMK[j]] = 0;
break;
case 0x12:
s[CYMK[j]] = 0;
break;
case 0x13:
s[CYMK[j]] = 0;
break;
case 0x15:
rsty(CYMK[j]);
break;
case 0x18:
write_m(CYMK[j], 0);
break;
case 0x19:
write_m(CYMK[j], 0);
break;
case 0x1a:
write_m(CYMK[j], 0);
break;
case 0x1b:
write_m(CYMK[j], 0);
break;
case 0x1c:
write_m(CYMK[j], 0);
break;
case 0x1d:
write_m(CYMK[j], 0);
break;
case 0x1f:
write_m(CYMK[j], 0);
break;
}
}
}
}
}
}
ityn = 0;
if (EXTI_GetITStatus(EXTI_Line7) != RESET)
//判断中断发生来源
{
EXTI_ClearITPendingBit(EXTI_Line7);
if ((m8000[54] == 0) && (enix == 1) && (tscok == 1))
for (j = 0; j < ipust; j++)
{
if (IPBJ[j] >= 400)
if (IPBJ[j] <= 401)
{
if (down_lad == 0)
if (x[79] == 0)
for (i = IPBI[j]; i < 16000; i = i + 2)
{
j = (*fuc_b[lad[i + 1]])(i);
if (j != 253)
{
i = i + j;
}
else
{
ityn = 1;
break;
}
}
}
}
if (ityn == 0)
{
if (CX4P)
d[CXD[4] + 1]++;
if (C239P == 1)
{
if (read_m(8200+sy239) == 0)
cth[sy239]++;
else
cth[sy239]--;
for (j = 0; j < 6; j++)
{
if (dhs_used[j] == 1)
if (CTX[j] == 39)
if (C251TS[j] == cth[sy239])
{
switch (CYM[j])
{
case 0x00:
s[CYMK[j]] = 1;
break;
case 0x01:
s[CYMK[j]] = 1;
break;
case 0x02:
s[CYMK[j]] = 1;
break;
case 0x03:
s[CYMK[j]] = 1;
break;
case 0x05:
sety(CYMK[j]);
break;
case 0x08:
write_m(CYMK[j], 1);
break;
case 0x09:
write_m(CYMK[j], 1);
break;
case 0x0a:
write_m(CYMK[j], 1);
break;
case 0x0b:
write_m(CYMK[j], 1);
break;
case 0x0c:
write_m(CYMK[j], 1);
break;
case 0x0d:
write_m(CYMK[j], 1);
break;
case 0x0f:
write_m(CYMK[j], 1);
break;
case 0x10:
s[CYMK[j]] = 0;
break;
case 0x11:
s[CYMK[j]] = 0;
break;
case 0x12:
s[CYMK[j]] = 0;
break;
case 0x13:
s[CYMK[j]] = 0;
break;
case 0x15:
rsty(CYMK[j]);
break;
case 0x18:
write_m(CYMK[j], 0);
break;
case 0x19:
write_m(CYMK[j], 0);
break;
case 0x1a:
write_m(CYMK[j], 0);
break;
case 0x1b:
write_m(CYMK[j], 0);
break;
case 0x1c:
write_m(CYMK[j], 0);
break;
case 0x1d:
write_m(CYMK[j], 0);
break;
case 0x1f:
write_m(CYMK[j], 0);
break;
}
}
}
}
if (C248P == 1)
if ((sy248 == 48) || ((sy248 == 50) && (C250P == 1)))
{
cth[sy248]--;
for (j = 0; j < 6; j++)
{
if (dhs_used[j] == 1)
if (CTX[j] == 48)
if (C251TS[j] == cth[sy248])
{
switch (CYM[j])
{
case 0x00:
s[CYMK[j]] = 1;
break;
case 0x01:
s[CYMK[j]] = 1;
break;
case 0x02:
s[CYMK[j]] = 1;
break;
case 0x03:
s[CYMK[j]] = 1;
break;
case 0x05:
sety(CYMK[j]);
break;
case 0x08:
write_m(CYMK[j], 1);
break;
case 0x09:
write_m(CYMK[j], 1);
break;
case 0x0a:
write_m(CYMK[j], 1);
break;
case 0x0b:
write_m(CYMK[j], 1);
break;
case 0x0c:
write_m(CYMK[j], 1);
break;
case 0x0d:
write_m(CYMK[j], 1);
break;
case 0x0f:
write_m(CYMK[j], 1);
break;
case 0x10:
s[CYMK[j]] = 0;
break;
case 0x11:
s[CYMK[j]] = 0;
break;
case 0x12:
s[CYMK[j]] = 0;
break;
case 0x13:
s[CYMK[j]] = 0;
break;
case 0x15:
rsty(CYMK[j]);
break;
case 0x18:
write_m(CYMK[j], 0);
break;
case 0x19:
write_m(CYMK[j], 0);
break;
case 0x1a:
write_m(CYMK[j], 0);
break;
case 0x1b:
write_m(CYMK[j], 0);
break;
case 0x1c:
write_m(CYMK[j], 0);
break;
case 0x1d:
write_m(CYMK[j], 0);
break;
case 0x1f:
write_m(CYMK[j], 0);
break;
}
}
}
}
}
}
}
/*******************************************************************************
* Function Name : TIM1_BRK_IRQHandler
* Description : This function handles TIM1 Break interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM1_BRK_IRQHandler(void){}
/*******************************************************************************
* Function Name : TIM1_UP_IRQHandler
* Description : This function handles TIM1 overflow and update interrupt
* request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM1_UP_IRQHandler(void){}
/*******************************************************************************
* Function Name : TIM1_TRG_COM_IRQHandler
* Description : This function handles TIM1 Trigger and commutation interrupts
* requests.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM1_TRG_COM_IRQHandler(void){}
/*******************************************************************************
* Function Name : TIM1_CC_IRQHandler
* Description : This function handles TIM1 capture compare interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM1_CC_IRQHandler(void){}
/*******************************************************************************
* Function Name : TIM2_IRQHandler
* Description : This function handles TIM2 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM2_IRQHandler(void){
}
/*******************************************************************************
* Function Name : TIM3_IRQHandler
* Description : This function handles TIM3 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM3_IRQHandler(void)
{
/* Clear the interrupt pending flag */
if (pus_cnt0 > 65536)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
pus_cnt0 = pus_cnt0 - 65536;
//if(pus_cnt0>0)
//{
if (pus_cnt0 > 65535)
TIM_TimeBaseStructure.TIM_Period = 0xffff;
else
TIM_TimeBaseStructure.TIM_Period = pus_cnt0;
TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); // Time base configuration
TIM_ETRClockMode2Config(TIM3, TIM_ExtTRGPSC_OFF,
TIM_ExtTRGPolarity_NonInverted, 0);
TIM_SetCounter(TIM3, 0);
TIM_ClearFlag(TIM3, TIM_FLAG_Update);
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM3, ENABLE);
}
//}
else
{
TIM_ClearFlag(TIM3, TIM_FLAG_Update);
TIM_Cmd(TIM5, DISABLE);
TIM_Cmd(TIM3, DISABLE);
//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
//GPIO_Init(GPIOA, &GPIO_InitStructure);
//GPIOA->BSRR = GPIO_Pin_2;
m8000[29] = 1;
u0en = 0;
write_m(8147, 0);
switch (dir0)
{
case 0:
ytemp[0] = 0;
break;
case 1:
ytemp[1] = 0;
break;
case 2:
ytemp[2] = 0;
break;
case 3:
ytemp[3] = 0;
break;
case 4:
ytemp[4] = 0;
break;
case 5:
ytemp[5] = 0;
break;
case 6:
ytemp[6] = 0;
break;
case 7:
ytemp[7] = 0;
break;
case 8:
ytemp[8] = 0;
break;
case 9:
ytemp[9] = 0;
break;
case 10:
ytemp[10] = 0;
break;
case 11:
ytemp[11] = 0;
break;
}
}
}
/*******************************************************************************
* Function Name : TIM4_IRQHandler
* Description : This function handles TIM4 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM4_IRQHandler(void)
{
if (pus_cnt1 > 65536)
{
// TIM4 clock source enable ETR MODE
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
pus_cnt1 = pus_cnt1 - 65536;
if (pus_cnt1 > 65535)
TIM_TimeBaseStructure.TIM_Period = 0xffff;
else
TIM_TimeBaseStructure.TIM_Period = pus_cnt1;
TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); // Time base configuration
TIM_ETRClockMode2Config(TIM4, TIM_ExtTRGPSC_OFF,
TIM_ExtTRGPolarity_NonInverted, 0);
TIM_SetCounter(TIM4, 0);
TIM_ClearFlag(TIM4, TIM_FLAG_Update);
TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM4, ENABLE);
}
else
{
TIM_ClearFlag(TIM4, TIM_FLAG_Update);
TIM_Cmd(TIM8, DISABLE);
TIM_Cmd(TIM4, DISABLE);
m8000[29] = 1;
u1en = 0;
write_m(8148, 0);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIOC->BSRR = GPIO_Pin_8;
switch (dir1)
{
case 0:
ytemp[0] = 0;
break;
case 1:
ytemp[1] = 0;
break;
case 2:
ytemp[2] = 0;
break;
case 3:
ytemp[3] = 0;
break;
case 4:
ytemp[4] = 0;
break;
case 5:
ytemp[5] = 0;
break;
case 6:
ytemp[6] = 0;
break;
case 7:
ytemp[7] = 0;
break;
case 8:
ytemp[8] = 0;
break;
case 9:
ytemp[9] = 0;
break;
case 10:
ytemp[10] = 0;
break;
case 11:
ytemp[11] = 0;
break;
}
}
}
/*******************************************************************************
* Function Name : I2C1_EV_IRQHandler
* Description : This function handles I2C1 Event interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void I2C1_EV_IRQHandler(void){}
/*******************************************************************************
* Function Name : I2C1_ER_IRQHandler
* Description : This function handles I2C1 Error interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void I2C1_ER_IRQHandler(void){}
/*******************************************************************************
* Function Name : I2C2_EV_IRQHandler
* Description : This function handles I2C2 Event interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void I2C2_EV_IRQHandler(void){}
/*******************************************************************************
* Function Name : I2C2_ER_IRQHandler
* Description : This function handles I2C2 Error interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void I2C2_ER_IRQHandler(void){}
/*******************************************************************************
* Function Name : SPI1_IRQHandler
* Description : This function handles SPI1 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SPI1_IRQHandler(void){}
/*******************************************************************************
* Function Name : SPI2_IRQHandler
* Description : This function handles SPI2 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SPI2_IRQHandler(void){}
/*******************************************************************************
* Function Name : USART1_IRQHandler
* Description : This function handles USART1 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void USART1_IRQHandler(void){}
/*******************************************************************************
* Function Name : USART2_IRQHandler
* Description : This function handles USART2 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void USART2_IRQHandler(void){
}
/*******************************************************************************
* Function Name : USART3_IRQHandler
* Description : This function handles USART3 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void USART3_IRQHandler(void)
{
u8 P2, i;
if (USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
/* Read one byte from the receive data register */
//RxBuffer1[RxCounter1++] = 0x7f&(USART_ReceiveData(USART1));
if ((m8000[80] == 0) || (down_lad == 1))
{
P2 = 0x7f &(USART_ReceiveData(USART3));
if (P2 == 0X05)
{
//RE1;
TxBuffer3[0] = 0X06;
Send3_Size = 1;
TxCounter3 = 0;
u485 = 5;
} //固定协议
if (P2 == 0X02)
{
vk3 = 1;
for (i = 1; i < 150; i++)
v3[i] = 0;
}
if (P2 != 0X02)
if (P2 != 0X05)
{
if (vk3 > 195)
vk3 = 0;
v3[vk3] = P2;
vk3++; //02
if (vk3 >= 3)
if (v3[vk3 - 3] == 0x03)
ST_Scan3V = 1;
//download ladder code
}
}
else
{
CMUT = 0;
v3[vk3] = USART_ReceiveData(USART3);
vk3++;
if (vk3 > 10)
vk3 = 0;
}
}
if (USART_GetITStatus(USART3, USART_IT_TXE) != RESET)
{
/* Write one byte to the transmit data register */
USART_SendData(USART3, TxBuffer3[TxCounter3++]);
if (TxCounter3 == Send3_Size)
{
/* Disable the USART1 Transmit interrupt */
USART_ITConfig(USART3, USART_IT_TXE, DISABLE);
u485 = 10;
}
}
}
/*******************************************************************************
* 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){}
/*******************************************************************************
* Function Name : RTCAlarm_IRQHandler
* Description : This function handles RTC Alarm interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void RTCAlarm_IRQHandler(void){}
/*******************************************************************************
* Function Name : USBWakeUp_IRQHandler
* Description : This function handles USB WakeUp interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void USBWakeUp_IRQHandler(void){}
/*******************************************************************************
* Function Name : TIM8_BRK_IRQHandler
* Description : This function handles TIM8 Break interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM8_BRK_IRQHandler(void){}
/*******************************************************************************
* Function Name : TIM8_UP_IRQHandler
* Description : This function handles TIM8 overflow and update interrupt
* request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM8_UP_IRQHandler(void){}
/*******************************************************************************
* Function Name : TIM8_TRG_COM_IRQHandler
* Description : This function handles TIM8 Trigger and commutation interrupts
* requests.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM8_TRG_COM_IRQHandler(void){}
/*******************************************************************************
* Function Name : TIM8_CC_IRQHandler
* Description : This function handles TIM8 capture compare interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM8_CC_IRQHandler(void)
{
TIM8->SR &= ~2; // 清除中断标志(不做判断提高效率)
if (pus1 == 1)
{
TIM_Cmd(TIM8, DISABLE);
m8000[29] = 1;
u1en = 0;
write_m(8148, 0);
}
else
if (ps2 == 1)
{
ps2 = 0;
TIM_TimeBaseStructure.TIM_Prescaler = div_cps2;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_Period = temps2;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
temps2 = (temps2 + 1) / 2;
// Channel 1, 2,3 and 4 Configuration in PWM mode
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
TIM_OCInitStructure.TIM_Pulse = temps2;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
//TIM_OCPolarity_Low;
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
//TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;
TIM_OC3Init(TIM8, &TIM_OCInitStructure);
}
//TIM8->DIER = 0x00;
}
/*******************************************************************************
* Function Name : ADC3_IRQHandler
* Description : This function handles ADC3 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void ADC3_IRQHandler(void){}
/*******************************************************************************
* Function Name : FSMC_IRQHandler
* Description : This function handles FSMC global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void FSMC_IRQHandler(void){}
/*******************************************************************************
* Function Name : SDIO_IRQHandler
* Description : This function handles SDIO global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SDIO_IRQHandler(void){}
/*******************************************************************************
* Function Name : TIM5_IRQHandler
* Description : This function handles TIM5 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM5_IRQHandler(void)
{
TIM_ClearITPendingBit(TIM5, TIM_IT_CC2);
if (pus0 == 1)
{
TIM_Cmd(TIM5, DISABLE);
TIM_DeInit(TIM5);
m8000[29] = 1;
u0en = 0;
write_m(8147, 0);
}
else
{
if (ps1 == 1)
{
ps1 = 0;
TIM_TimeBaseStructure.TIM_Period = temps1;
TIM_TimeBaseStructure.TIM_Prescaler = div_cps1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Down;
TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);
// PWM1 Mode configuration: Channel3
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = temps1 / 2;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC3Init(TIM5, &TIM_OCInitStructure);
TIM_OC3PreloadConfig(TIM5, TIM_OCPreload_Enable);
}
}
TIM_ITConfig(TIM5, TIM_IT_CC2, DISABLE);
}
/*******************************************************************************
* Function Name : SPI3_IRQHandler
* Description : This function handles SPI3 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SPI3_IRQHandler(void){}
/*******************************************************************************
* Function Name : UART4_IRQHandler
* Description : This function handles UART4 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void UART4_IRQHandler(void){}
/*******************************************************************************
* Function Name : UART5_IRQHandler
* Description : This function handles UART5 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void UART5_IRQHandler(void){}
/*******************************************************************************
* Function Name : TIM6_IRQHandler
* Description : This function handles TIM6 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM6_IRQHandler(void){}
/*******************************************************************************
* Function Name : TIM7_IRQHandler
* Description : This function handles TIM7 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void TIM7_IRQHandler(void){}
/*******************************************************************************
* Function Name : DMA2_Channel1_IRQHandler
* Description : This function handles DMA2 Channel 1 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA2_Channel1_IRQHandler(void){}
/*******************************************************************************
* Function Name : DMA2_Channel2_IRQHandler
* Description : This function handles DMA2 Channel 2 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA2_Channel2_IRQHandler(void){}
/*******************************************************************************
* Function Name : DMA2_Channel3_IRQHandler
* Description : This function handles DMA2 Channel 3 interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA2_Channel3_IRQHandler(void){}
/*******************************************************************************
* Function Name : DMA2_Channel4_5_IRQHandler
* Description : This function handles DMA2 Channel 4 and DMA2 Channel 5
* interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void DMA2_Channel4_5_IRQHandler(void){}
/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF
FILE****/