中断服务函数存放路径为启动文件:startup_stm32f10x_hd
1、常用的中断服务函数
//外部中断服务函数:
EXTI0_IRQHandler // EXTI0_IRQn
EXTI1_IRQHandler // EXTI1_IRQn
EXTI2_IRQHandler // EXTI2_IRQn
EXTI3_IRQHandler // EXTI3_IRQn
EXTI4_IRQHandler // EXTI4_IRQn
EXTI9_5_IRQHandler // EXTI9_5_IRQn
EXTI15_10_IRQHandler // EXTI15_10_IRQn
//串口中断服务函数:
USART1_IRQHandler // USART1_IRQn
USART2_IRQHandler // USART2_IRQn
USART3_IRQHandler // USART3_IRQn
UART4_IRQHandler // UART4_IRQn
UART5_IRQHandler // UART5_IRQn
//通用定时器中断服务函数:
TIM2_IRQHandler // TIM2_IRQn
TIM3_IRQHandler // TIM3_IRQn
TIM4_IRQHandler // TIM4_IRQn
TIM5_IRQHandler // TIM5_IRQn
//基本定时器中断服务函数:
TIM6_IRQHandler // TIM6_IRQn
TIM7_IRQHandler // TIM7_IRQn
//高级定时器中断服务函数:
TIM1_BRK_IRQHandler // TIM1_BRK_IRQn
TIM1_UP_IRQHandler // TIM1_UP_IRQn
TIM1_TRG_COM_IRQHandler // TIM1_TRG_COM_IRQn
TIM1_CC_IRQHandler // TIM1_CC_IRQn
//TIM8_BRK_IRQHandler // TIM8_BRK_IRQn
TIM8_UP_IRQHandler // TIM8_UP_IRQn
TIM8_TRG_COM_IRQHandler // TIM8_TRG_COM_IRQn
TIM8_CC_IRQHandler // TIM8_CC_IRQn
//ADC中断服务函数:
ADC1_2_IRQHandler // ADC1_2_IRQn
ADC3_IRQHandler // ADC3_IRQn
//DMA中断服务函数:
DMA1_Channel1_IRQHandler // DMA1_Channel1_IRQn
DMA1_Channel2_IRQHandler // DMA1_Channel2_IRQn
DMA1_Channel3_IRQHandler // DMA1_Channel3_IRQn
DMA1_Channel4_IRQHandler // DMA1_Channel4_IRQn
DMA1_Channel5_IRQHandler // DMA1_Channel5_IRQn
DMA1_Channel6_IRQHandler // DMA1_Channel6_IRQn
DMA1_Channel7_IRQHandler // DMA1_Channel7_IRQn
DMA2_Channel1_IRQHandler // DMA2_Channel1_IRQn
DMA2_Channel2_IRQHandler // DMA2_Channel2_IRQn
DMA2_Channel3_IRQHandler // DMA2_Channel3_IRQn
DMA2_Channel4_5_IRQHandler // DMA2_Channel4_5_IRQn
//IIC中断服务函数
I2C1_EV_IRQHandler // I2C1_EV_IRQn
I2C1_ER_IRQHandler // I2C1_ER_IRQn
I2C2_EV_IRQHandler // I2C2_EV_IRQn
I2C2_ER_IRQHandler // I2C2_ER_IRQn
//SPI中断服务函数
SPI1_IRQHandler // SPI1_IRQn
SPI2_IRQHandler // SPI2_IRQn
SPI3_IRQHandler // SPI3_IRQn
2、常用中断服务函数格式
//外部中断服务函数判断逻辑
void EXTIx_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Linex)!=RESET)//判断是否进入中断
{
中断执行命令……
EXTI_ClearITPendingBit(EXTI_Linex);//清除中断标志位
}
}
//基本,通用定时器中断服务函数
void TIMx_IRQHandler(void)
{
if (TIM_GetITStatus(TIMx, TIM_IT_Update) != RESET)//判断是否进入中断
{
中断执行命令……
TIM_ClearITPendingBit(TIMx, TIM_IT_Update);//清除中断标志位
}
}
//高级定时器中断服务函数
void TIMx_UP_IRQHandler(void)
{
if (TIM_GetITStatus(TIMx, TIM_IT_Update) != RESET)//判断是否进入中断
{
中断执行命令……
TIM_ClearITPendingBit(TIMx, TIM_IT_Update);//清除中断标志位
}
}
//串口中断服务函数
void USARTx_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//判断是否进入中断
{
Res=USART_ReceiveData(USART1); //读取接收到的数据后自动清除中断标志位
}
}