STM32外部中断设置

来源:互联网 发布:php企业网站源码下载 编辑:程序博客网 时间:2024/06/10 15:05

硬件:STM32F103C8T6

实例引脚:PA8

//引脚属性配置

void CC2500_PIN_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStru;

    GPIO_InitStru.GPIO_Pin = GPIO_Pin_8;
    GPIO_InitStru.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_InitStru.GPIO_Speed = GPIO_Speed_2MHz;

    GPIO_Init(GPIOA,&GPIO_InitStru);
}

void CC2500_Interrupt_Config(void)
{
    NVIC_InitTypeDef NVIC_InitStru;

    EXTI_InitTypeDef EXTI_InitStru;


    /* Connect EXTI0 Line to PA8 pin */
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource8);
    /* Configure EXTI8 line */
    EXTI_InitStru.EXTI_Line = EXTI_Line8;
    EXTI_InitStru.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStru.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_InitStru.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStru);


    /* Enable and set EXTI0 Interrupt to the lowest priority */
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//bit3用于指定抢占优先级,bit2~bit0指定响应式优先级
    NVIC_InitStru.NVIC_IRQChannel = EXTI9_5_IRQn;
    NVIC_InitStru.NVIC_IRQChannelPreemptionPriority = 1;//0或者1,四位中的bit4用于指定抢占优先级
    NVIC_InitStru.NVIC_IRQChannelSubPriority = 3; //0~7,四位中的低三位用于指定响应式优先级
    NVIC_InitStru.NVIC_IRQChannelCmd = ENABLE;
    EXTI_ClearITPendingBit(EXTI_Line8);
    NVIC_Init(&NVIC_InitStru);
}


中断服务函数:

void EXTI9_5_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line8) != RESET)
    {
        EXTI_ClearITPendingBit(EXTI_Line8);

//do next step           
    }
}

原创粉丝点击