您的位置:首页 > 其它

STM32 中断配置 自我学习总结

2014-11-04 14:20 246 查看
简单记录一下STM32 的中断配置说明!

----第一部分是---中断向量表-----
















--------这个只是简单参照----不同版本也有些不一样--但是大同小异----自己可以到启动文件---startup_stm32f10x_hd.s中去查找。

----第二部分---中断优先级配置

static void NVIC_Configuration(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //分组

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //主要地方

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //次优先级

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

----第三部分---中断端口等配置

void EXTI_PA0_Config(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

EXTI_InitTypeDef EXTI_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);

NVIC_Configuration();

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //端口上拉

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); //PA0为外部中断输入端

EXTI_InitStructure.EXTI_Line = EXTI_Line0;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中断模式---另一个是事件模式

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //触发方式是下降沿

EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能

EXTI_Init(&EXTI_InitStructure);

}



----第四部分---中断函数



void EXTI0_IRQHandler(void)

{

if(EXTI_GetITStatus(EXTI_Line0) != RESET)
//产生相应中断

{

.........................

EXTI_ClearITPendingBit(EXTI_Line0);
//清除中断标志位

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: