×
单片机 > 单片机程序设计 > 详情

STM32学习笔记-外部中断

发布时间:2020-08-26 发布时间:
|

中断,顾名思义,一个连续进行的过程被打断.在处理器处理一个任务时有一个任务需要它马上处理,就需要它先停下手中的任务,去优先执行这个任务.


配置外部中断与配置初始化io口流程类似


void EXTI_Config(void)

{

 

    EXTI_InitTypeDef EXTI_InitStructure;

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource14);

    EXTI_InitStructure.EXTI_Line = EXTI_Line14;

    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

    EXTI_InitStructure.EXTI_LineCmd = ENABLE;

    EXTI_Init(&EXTI_InitStructure);


}

EXTI_InitTypeDef 结构变量类型


GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource14);将GPIO管脚与外部中断线连接


EXTI_InitStructure.EXTI_Line = EXTI_Line14;外部中断线,与io口对应,见手册,不同单片机型号不同


EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;触发方式上升沿触发,下降沿触发等


EXTI_InitStructure.EXTI_LineCmd = ENABLE;使能中断线通道(打开中断线通道)


EXTI_Init(&EXTI_InitStructure);配置外部中断,传入结构体变量地址


中断优先级配置


void NVIC_Config(void)

{

    NVIC_InitTypeDef NVIC_InitStructure;

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    

    NVIC_InitStructure.NVIC_IRQChannel =EXTI15_10_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =2;

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);

 

}

NVIC_InitTypeDef结构体变量名


NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);中断分组,详见手册


NVIC_InitStructure.NVIC_IRQChannel =EXTI15_10_IRQn;中断线通道,与上面结构体的外部中断线对应,见手册


NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =2;抢占优先级


NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;响应优先级


中断A抢占优先级比B高,那么A的中断可以在B里面触发,忽略响应优先级;

A和B抢占优先级相同,则A、B的响应优先级决定谁先响应;

EXTI_InitStructure.EXTI_LineCmd = ENABLE;使能中断线通道

NVIC_Init(&NVIC_InitStructure);传入结构体变量地址,完成初始化


产生外部中断后进入下面的中断服务函数,执行中断服务函数中的内容


void EXTI15_10_IRQHandler(void)

{

    ....;



关键字:STM32  外部中断 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于AT91M42800A的LED显示系统设计