新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32F107VCT6的外部中斷配置

        STM32F107VCT6的外部中斷配置

        作者: 時間:2016-11-10 來源:網絡 收藏
        存在的問題:如果將GPIO15管腳用于外部中斷功能,但中斷處理函數中默認找不到對應的中斷處理函數。
        main.c文件中

        int main(void)
        {
        SystemInit();

        __disable_irq();
        RCC_Configuration();
        EXTI_Configuration();
        __enable_irq();

        IWWDG_Configuration();

        while (1)
        {
        WDG_Func(); //每250ms喂狗一次
        }
        }

        本文引用地址:http://www.104case.com/article/201611/317519.htmhw_config硬件配置文件中

        void EXTI_Configuration(void)
        {
        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);

        GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource15);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//GPIO_Mode_IPU;//GPIO_Mode_IN_FLOATING
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOD, &GPIO_InitStructure);

        EXTI_InitStructure.EXTI_Line = EXTI_Line15;
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);

        NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
        }

        startup_stm32f10x_cl.s文件中

        MODULE ?cstartup

        ;; Forward declaration of sections.
        SECTION CSTACK:DATA:NOROOT(3)

        SECTION .intvec:CODE:NOROOT(2)

        EXTERN __iar_program_start
        EXTERN SystemInit
        PUBLIC __vector_table

        DATA
        __vector_table
        DCD sfe(CSTACK)
        DCD Reset_Handler ; Reset Handler
        DCD NMI_Handler ; NMI Handler
        DCD HardFault_Handler ; Hard Fault Handler
        DCD MemManage_Handler ; MPU Fault Handler
        DCD BusFault_Handler ; Bus Fault Handler
        DCD UsageFault_Handler ; Usage Fault Handler
        DCD 0 ; Reserved
        DCD 0 ; Reserved
        DCD 0 ; Reserved
        DCD 0 ; Reserved
        DCD SVC_Handler ; SVCall Handler
        DCD DebugMon_Handler ; Debug Monitor Handler
        DCD 0 ; Reserved
        DCD PendSV_Handler ; PendSV Handler
        DCD SysTick_Handler ; SysTick Handler

        ; External Interrupts
        DCD WWDG_IRQHandler ; Window Watchdog
        DCD PVD_IRQHandler ; PVD through EXTI Line detect
        DCD TAMPER_IRQHandler ; Tamper
        DCD RTC_IRQHandler ; RTC
        DCD FLASH_IRQHandler ; Flash
        DCD RCC_IRQHandler ; RCC
        DCD EXTI0_IRQHandler ; EXTI Line 0
        DCD EXTI1_IRQHandler ; EXTI Line 1
        DCD EXTI2_IRQHandler ; EXTI Line 2
        DCD EXTI3_IRQHandler ; EXTI Line 3
        DCD EXTI4_IRQHandler ; EXTI Line 4
        DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1
        DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2
        DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3
        DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4
        DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5
        DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6
        DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7
        DCD ADC1_2_IRQHandler ; ADC1 and ADC2
        DCD CAN1_TX_IRQHandler ; CAN1 TX
        DCD CAN1_RX0_IRQHandler ; CAN1 RX0
        DCD CAN1_RX1_IRQHandler ; CAN1 RX1
        DCD CAN1_SCE_IRQHandler ; CAN1 SCE
        DCD EXTI9_5_IRQHandler ; EXTI Line 9..5
        DCD TIM1_BRK_IRQHandler ; TIM1 Break
        DCD TIM1_UP_IRQHandler ; TIM1 Update
        DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation
        DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare
        DCD TIM2_IRQHandler ; TIM2
        DCD TIM3_IRQHandler ; TIM3
        DCD TIM4_IRQHandler ; TIM4
        DCD I2C1_EV_IRQHandler ; I2C1 Event
        DCD I2C1_ER_IRQHandler ; I2C1 Error
        DCD I2C2_EV_IRQHandler ; I2C2 Event
        DCD I2C2_ER_IRQHandler ; I2C1 Error
        DCD SPI1_IRQHandler ; SPI1
        DCD SPI2_IRQHandler ; SPI2
        DCD USART1_IRQHandler ; USART1
        DCD USART2_IRQHandler ; USART2
        DCD USART3_IRQHandler ; USART3
        DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 將其拷貝到中斷處理函數中
        DCD RTCAlarm_IRQHandler ; RTC alarm through EXTI line
        DCD OTG_FS_WKUP_IRQHandler ; USB OTG FS Wakeup through EXTI line
        DCD 0 ; Reserved
        DCD 0 ; Reserved
        DCD 0 ; Reserved
        DCD 0 ; Reserved
        DCD 0 ; Reserved
        DCD 0 ; Reserved
        DCD 0 ; Reserved
        DCD TIM5_IRQHandler ; TIM5
        DCD SPI3_IRQHandler ; SPI3
        DCD UART4_IRQHandler ; UART4
        DCD UART5_IRQHandler ; UART5
        DCD TIM6_IRQHandler ; TIM6
        DCD TIM7_IRQHandler ; TIM7
        DCD DMA2_Channel1_IRQHandler ; DMA2 Channel1
        DCD DMA2_Channel2_IRQHandler ; DMA2 Channel2
        DCD DMA2_Channel3_IRQHandler ; DMA2 Channel3
        DCD DMA2_Channel4_IRQHandler ; DMA2 Channel4
        DCD DMA2_Channel5_IRQHandler ; DMA2 Channel5
        DCD ETH_IRQHandler ; Ethernet
        DCD ETH_WKUP_IRQHandler ; Ethernet Wakeup through EXTI line
        DCD CAN2_TX_IRQHandler ; CAN2 TX
        DCD CAN2_RX0_IRQHandler ; CAN2 RX0
        DCD CAN2_RX1_IRQHandler ; CAN2 RX1
        DCD CAN2_SCE_IRQHandler ; CAN2 SCE
        DCD OTG_FS_IRQHandler ; USB OTG FS

        stm32f10x_it.c中斷處理函數中

        void EXTI15_10_IRQHandler(void)
        {
        if (EXTI_GetITStatus(EXTI_Line15) != RESET)
        {
        REVERSE_LED(LED_GPIO, LED_PIN);
        EXTI_ClearITPendingBit(EXTI_Line15);
        }
        }




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 鄢陵县| 永济市| 德昌县| 通榆县| 吐鲁番市| 蒙山县| 虎林市| 永新县| 施甸县| 千阳县| 黄大仙区| 克什克腾旗| 东源县| 昌乐县| 甘南县| 尉犁县| 六枝特区| 南岸区| 普兰店市| 和林格尔县| 杭州市| 咸阳市| 平原县| 靖西县| 益阳市| 肥西县| 旺苍县| 沁源县| 叙永县| 五家渠市| 东阿县| 三原县| 宣武区| 德惠市| 徐汇区| 绥宁县| 桂阳县| 五华县| 蓬莱市| 温州市| 保定市|