本文采用官方的库函数接口实现STM8L51X gpio中断
STM8L51X的中断向量入口函数都放在stm8l51x_it.c里面。
不同的中断对应的中断号如下(在stm8l51x_itc.h里面):
typedef enum {
FLASH_IRQn = (uint8_t)1, /*!< Flashinterrupt */
DMA1_CHANNEL0_1_IRQn = (uint8_t)2, /*!< DMAChannels 0/1 */
DMA1_CHANNEL2_3_IRQn = (uint8_t)3, /*!< DMAChannels 2/3 */
EXTIE_F_PVD_IRQn = (uint8_t)5, /*!< GPIOE/Fand PVD interrupt */
EXTI0_IRQn = (uint8_t)8, /*!< PIN0 interrupt */
EXTI1_IRQn = (uint8_t)9, /*!< PIN1interrupt */
EXTI2_IRQn = (uint8_t)10, /*!< PIN2interrupt */
EXTI3_IRQn = (uint8_t)11, /*!< PIN3interrupt */
EXTI4_IRQn = (uint8_t)12, /*!< PIN4interrupt */
EXTI5_IRQn = (uint8_t)13, /*!< PIN5interrupt */
EXTI6_IRQn = (uint8_t)14, /*!< PIN6interrupt */
EXTI7_IRQn = (uint8_t)15, /*!< PIN7interrupt */
ADC1_COMP_IRQn = (uint8_t)18, /*!
TIM4_UPD_OVF_TRG_IRQn = (uint8_t)25, /*!< TIM4Update/Overflow/Trigger interrupt */
SPI1_IRQn = (uint8_t)26, /*!< SPI1interrupt */
#if defined (STM8L15X_MD) || defined(STM8L05X_MD_VL) || defined (STM8AL31_L_MD)
RTC_IRQn = (uint8_t)4, /*!< RTCinterrupt */
EXTIB_IRQn = (uint8_t)6, /*!< GPIOBinterrupt */
EXTID_IRQn = (uint8_t)7, /*!< GPIODinterrupt */
LCD_IRQn = (uint8_t)16, /*!< LCD Driverinterrupt */
SWITCH_CSS_BREAK_DAC_IRQn = (uint8_t)17, /*!< Clock switch/CSS interrupt/TIM1 Break/DAC interrupt */
TIM2_UPD_OVF_TRG_BRK_IRQn = (uint8_t)19, /*!< TIM2Update/Overflow/Trigger/Break interrupt*/
TIM2_CC_IRQn = (uint8_t)20, /*!< TIM2 inputcaptute/output compare interrupt */
TIM3_UPD_OVF_TRG_BRK_IRQn = (uint8_t)21, /*!< TIM3Update/Overflow/Trigger/Break interrupt */
TIM3_CC_IRQn = (uint8_t)22, /*!< TIM3capture/compare interrupt */
TIM1_UPD_OVF_TRG_IRQn = (uint8_t)23, /*!< TIM1 TIM1 Update/Overflow/Triggerinterrupt */
TIM1_CC_IRQn = (uint8_t)24, /*!< TIM1 capture/compare interrupt */
USART1_TX_IRQn = (uint8_t)27, /*!< USART1 TXinterrupt */
USART1_RX_IRQn = (uint8_t)28, /*!< USART1 RXinterrupt */
I2C1_IRQn = (uint8_t)29 /*!< I2C1 interrupt */
#elif defined (STM8L15X_LD) || defined(STM8L05X_LD_VL)
RTC_CSSLSE_IRQn = (uint8_t)4, /*!< RTC /CSSLSE interrupt */
EXTIB_IRQn = (uint8_t)6, /*!< GPIOB interrupt */
EXTID_IRQn = (uint8_t)7, /*!< GPIODinterrupt */
SWITCH_CSS_IRQn = (uint8_t)17, /*!< Clock switch/CSS interrupt/TIM1 Break/DAC interrupt */
TIM2_UPD_OVF_TRG_BRK_IRQn = (uint8_t)19, /*!< TIM2Update/Overflow/Trigger/Break interrupt*/
TIM2_CC_IRQn = (uint8_t)20, /*!< TIM2 inputcaptute/output compare interrupt */
TIM3_UPD_OVF_TRG_BRK_IRQn = (uint8_t)21, /*!< TIM3 Update/Overflow/Trigger/Breakinterrupt */
TIM3_CC_IRQn = (uint8_t)22, /*!< TIM3capture/compare interrupt */
USART1_TX_IRQn = (uint8_t)27, /*!< USART1 TXinterrupt */
USART1_RX_IRQn = (uint8_t)28, /*!< USART1 RXinterrupt */
I2C1_IRQn = (uint8_t)29 /*!< I2C1interrupt */
#elif defined (STM8L15X_HD) || defined(STM8L15X_MDP) || defined (STM8L05X_HD_VL)
RTC_CSSLSE_IRQn = (uint8_t)4, /*!< RTC / CSSLSE interrupt */
EXTIB_G_IRQn = (uint8_t)6, /*!< GPIOB / Ginterrupt */
EXTID_H_IRQn = (uint8_t)7, /*!< GPIOD / Hinterrupt */
LCD_AES_IRQn = (uint8_t)16, /*!< LCD / AESinterrupt */
SWITCH_CSS_BREAK_DAC_IRQn = (uint8_t)17, /*!< Clock switch/CSS interrupt/TIM1 Break/DAC interrupt */
TIM2_UPD_OVF_TRG_BRK_USART2_TX_IRQn = (uint8_t)19, /*!< TIM2Update/Overflow/Trigger/Break /USART2 TX interrupt*/
TIM2_CC_USART2_RX_IRQn = (uint8_t)20, /*!< TIM2capture/compare / USART2 RX interrupt */
TIM3_UPD_OVF_TRG_BRK_USART3_TX_IRQn = (uint8_t)21, /*!< TIM3Update/Overflow/Trigger/Break / USART3 TX interrupt */
TIM3_CC_USART3_RX_IRQn = (uint8_t)22, /*!< TIM3capture/compare / USART3 RX interrupt */
TIM1_UPD_OVF_TRG_IRQn = (uint8_t)23, /*!< TIM1 TIM1 Update/Overflow/Triggerinterrupt */
TIM1_CC_IRQ
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』