stm32之9.中断优先级配置

stm32之9.中断优先级配置_第1张图片

stm32之9.中断优先级配置_第2张图片

stm32之9.中断优先级配置_第3张图片

 主函数main.c

stm32之9.中断优先级配置_第4张图片

#include 
#include "led.h"
#include "key.h"

#define PAin(n)        (*(volatile uint32_t *)(0x42000000 + (GPIOA_BASE+0x10-0x40000000)*32 + (n)*4))
#define PEin(n)        (*(volatile uint32_t *)(0x42000000 + (GPIOE_BASE+0x10-0x40000000)*32 + (n)*4))


#define PEout(n)    (*(volatile uint32_t *)(0x42000000 + (GPIOE_BASE+0x14-0x40000000)*32 + (n)*4))
#define PFout(n)    (*(volatile uint32_t *)(0x42000000 + (GPIOF_BASE+0x14-0x40000000)*32 + (n)*4))

int main(void)
{
    //抢占优先级0~3,支持4级!
    //响应优先级0~3,支持4级!
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    
    
    led_init();
    
    key_init();

    
    while(1)
    {

    }
}

//外部中断0的中断服务函数
//void EXTI0_IRQHandler(void)
void EXTI0_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line0) == SET)
    {

        PFout(9)=0;
        delay();
        PFout(9)=1;
        delay();

        /* 清空标志位,告诉CPU当前中断请求完毕,可以去响应新的中断请求
           思考题:若不清空标志位,会出现什么现象?

        */
        EXTI_ClearITPendingBit(EXTI_Line0);
    }
    
}


//外部中断2的中断服务函数
void EXTI2_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line2) == SET)
    {
        PFout(10)=0;
        delay();
        PFout(10)=1;
        delay();

        /* 清空标志位,告诉CPU当前中断请求完毕,可以去响应新的中断请求
           思考题:若不清空标志位,会出现什么现象?

        */
        EXTI_ClearITPendingBit(EXTI_Line2);
    }
}


//外部中断3的中断服务函数
void EXTI3_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line3) == SET)
    {
        PEout(13)=0;
        delay();
        PEout(13)=1;
        delay();

        /* 清空标志位,告诉CPU当前中断请求完毕,可以去响应新的中断请求
           思考题:若不清空标志位,会出现什么现象?

        */
        EXTI_ClearITPendingBit(EXTI_Line3);
    }
}

//外部中断4的中断服务函数
void EXTI4_IRQHandler(void)
{
    if(EXTI_GetITStatus(EXTI_Line4) == SET)
    {
        PEout(14)=0;
        delay();
        PEout(14)=1;
        delay();

        /* 清空标志位,告诉CPU当前中断请求完毕,可以去响应新的中断请求
           思考题:若不清空标志位,会出现什么现象?

        */
        EXTI_ClearITPendingBit(EXTI_Line4);
    }
}

----------------------

key.c代码

0x00优先等级最高

0x03等级最低

stm32之9.中断优先级配置_第5张图片

你可能感兴趣的:(stm32,嵌入式硬件,单片机)