将引脚配置为中断ARM Cortex M3 STM32F1xx

时间:2017-04-11 18:00:07

标签: arm interrupt cortex-m3

我试图将Pin PD3配置为外部中断,这是我的配置,但它似乎不起作用。所以我定义了所有内容并对其进行了配置,我仍然无法让中断工作在下降沿或上升沿。

     void Configure_PD3(void) {
     GPIO_InitTypeDef GPIO_InitStruct;

     /* GPIO Ports Clock Enable */

     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD,ENABLE); // enables clock to portD
     GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
     /*Configure GPIO pin : PD3 */
     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
     GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;

     GPIO_Init(GPIOD, &GPIO_InitStruct);
    /* PD3 is connected to EXTI_Line3 */
        EXTI_InitStruct.EXTI_Line = EXTI_Line3;
        /* Enable interrupt */
        EXTI_InitStruct.EXTI_LineCmd = ENABLE;
        /* Interrupt mode */
        EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
        /* Triggers on rising and falling edge */
        EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
        /* Add to EXTI */
        EXTI_Init(&EXTI_InitStruct);

     /* EXTI interrupt init*/
     NVIC_SetPriority(EXTI3_IRQn, 0);
     NVIC_EnableIRQ(EXTI3_IRQn);
    }

    void EXTI3_IRQHandler(void)
    {
      int i = 0;

    }

    void main() {

    // Don't put any variables on the stack here, as FreeRTOS seems to reuse this space.
    // This might be valid as this thread will be dead after vTaskStartScheduler().

        hardware_init();

        Co

nfigure_PD3();
}

0 个答案:

没有答案