当前位置:文档之家› stm32EXTI配置

stm32EXTI配置

EXTI配置规则
配置时钟→初始化IO口→配置中端向量优先级→指定中断IO口→中断方式→使能中断→写中断函数
主函数
Void main (void)
{
开启用到的外设时钟
Void RCC_Configuation();
初始化IO口
Void IO_Configuation();
中断设置
Void EXTI_Configuation()
{
定义结构变量
EXTI_InitTypeDef EXTI_InitStructure;
清除中断标志
EXTI_ClearPendingBit(EXTI_Linex);
选择中断管脚
GPIO_EXTILineConfig(GPIO_PortSourceGPIOx,GPIO_PinSourcex)
选择中段线路
EXTI_InitStructure.EXTI_Line(EXTI_Linex);
中断模式
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
中断触发方式
EXTI_InitStructure.EXTI_Trigger=EXTI_Teigger_Rising_Falling;
中段线路使能
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
初始化设置
EXTI_Init(&EXTI_InitStucture);
}
配置中断向量优先级
Void NVIC_Configuation()
{
定义结构(只定义一次)
NVIC_InitTypeDef NVIC_InitStructure;
选择中断分组(选择一次)
NVIC_PriorityGroupConfig(NVIC_Priority_group_x);
选择中断通道
NVIC_InitStructure.NVIC_IRQChannel=EXTIx_IRQChannel;
抢占式中断优先级设置
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=x;
响应式中断优先级设置
NVIC_InitStructure.NVIC_IRQChannelSubPriority=x;
使能中断
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
初始化设置
NVIC_Init(&NVIC_InitStruction);
}
死循环
While(1);
}
中断函数
Void EXTIx_IRQHandler(voie)
{
点亮LED
GPIO_SetBits(GPIOx,GPIO_Pin_x);
清除中断标志
EXTI_ClearITPendingBit(EXTI_Linex);
}。

相关主题