STM32中断15—10的设置

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32----4----EXTI

文章发表于:2011-05-09 10:33

外部中断配置的目标是:PA15、PA13为按键,PA8,PD0为LED,按键进入中断,相应的LED亮灭。

void EXTI_Configuration()

{

EXTI_InitTypeDef EXTI_InitStructure;

NVIC_InitTypeDef NVIC_InitStructure;

//清空中断标志

EXTI_ClearITPendingBit(EXTI_Line13);

EXTI_ClearITPendingBit(EXTI_Line15);

//(1)管脚配置

LED_Init();

KEY_Init();

//(2)外部中断线配置,选择中断线管脚PA13、PA15、PA0

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource13);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource15);

//(3)对中断线进行中断设置

EXTI_InitStructure.EXTI_Line = EXTI_Line13 | EXTI_Line15 ; //选择中断线路PA13/15

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //设置为中断请求,非事件请求

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling ; //设置中断触发方式为上下降沿触发EXTI_InitStructure.EXTI_LineCmd = ENABLE; //外部中断使能

EXTI_Init(&EXTI_InitStructure); //初始化中断

//EXTI_GenerateSWInterrupt(EXTI_Line0| EXTI_Line13 | EXTI_Line15 ); //中断线使能、中断结构体初始化、以及设置软中断综合起来才启用了中断

//(4)NVIC配置

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); //选择中断分组2

NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQChannel; //选择中断通道2

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占式中断优先级设置为0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应式中断优先级设置为0

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能中断

NVIC_Init(&NVIC_InitStructure);

}

void LED_Init( )

{

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//选择PA.8

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管脚频率为50MHZ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //模式为推挽输出

GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA寄存器

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//选择PX.2

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//管脚频率为50MHZ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设置推挽输出

GPIO_Init(GPIOD , &GPIO_InitStructure);//初始化GPIOD寄存器

GPIO_WriteBit(GPIOA,GPIO_Pin_8,Bit_SET);

GPIO_WriteBit(GPIOD,GPIO_Pin_2,Bit_SET);

}

void KEY_Init()

{

/*PA13、PA15管口引脚的配置**下拉输入******************************/ GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_15;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

}

void EXTI15_10_IRQHandler(void)

{

delay_ms(10);

if(EXTI_GetITStatus(EXTI_Line15)==RESET)

{

if((GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_2)==0) )

LED1_Off();

else

LED1_On();

相关文档
最新文档