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);
//清除中断标志位
}
}
----第一部分是---中断向量表-----
--------这个只是简单参照----不同版本也有些不一样--但是大同小异----自己可以到启动文件---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);
//清除中断标志位
}
}
相关文章推荐
- STM32 ADC自我学习总结 不断更新中
- STM32 串口烧写 FLASH 外部字库 UCGUI显示 自我学习总结
- STM32 DMA 自我学习 简单总结
- STM32 UCGUI 移植 自我学习总结
- STM32 学习总结2 ----利用中断来控制按键点灯、捕获功能练习
- STM32 I2C总线 自我总结学习 不断更新中
- STM32 MDK 工程创建 图解步骤 自我学习总结
- 汇编--学习笔记(十三)-中断(二)- 自我总结
- stm32学习笔记之USB中断配置初始化函数
- stm32中断学习总结
- STM32学习笔记——高级定时器TIM1更新中断配置
- STM32 CAN 总线 自我学习总结
- STM32 SPI 自我学习总结 不断更新中
- STM32 485通信 自我学习总结 控制380V变频器去控制380V电机 不断更新中
- WCF 学习总结2 -- 配置WCF
- 配置文件验证管理员登陆 学习总结
- STM32 中断学习Interrupt/Evens
- nginx学习总结三(nginx的基本配置)
- NHibernate学习总结:(一)NHibernate的使用和配置