1.GPIO_EXTILineConfig
函数原型:void GPIO_EXTILineConfig(u8 GPIO_PortSource,u8 GPIO_PinSource)
功能:选择GPIO引脚用作外部中断线路
参数:
- GPIO_PortSource:选择用作外部中断源的GPIO端口
- GPIO_PinSource:待设置的外部中断引脚。该参数可以取GPIO_PinSourcex(x可以是0~15)
返回值:无
参数:GPIO_PortSource
- GPIO_PortSourceGPIOA 选择GPIOA
- GPIO_PortSourceGPIOB 选择GPIOB
- GPIO_PortSourceGPIOC 选择GPIOC
- GPIO_PortSourceGPIOD 选择GPIOD
- GPIO_PortSourceGPIOE 选择GPIOE
例子:
GPIO_EXTILineConfig (GPIO_PortSourceGPIOB,GPIO_PinSource8); //设置PB.8引脚为外部中断入口8
2.NVIC_PriorityGroupConfig
函数原型:void NVIC_PriorityGroupConfig (u32 NVIC_PriorityGroup)
功能:设置优先级分组的先占优先级和从优先级的数量。
参数:NVIC_PriorityGroup:优先级分组位长度
返回值:无
参数:NVIC_PriorityGroup
- NVIC_PriorityGroup_0 先占优先级0位,次占优先级4位。
- NVIC_PriorityGroup_1 先占优先级1位,次占优先级3位。
- NVIC_PriorityGroup_2 先占优先级2位,次占优先级2位。
- NVIC_PriorityGroup_3 先占优先级3位,次占优先级1位。
- NVIC_PriorityGroup_4 先占优先级4位,次占优先级0位。
例子:
NVIC_PriorityGroupConfig (NVIC_PriorityGroup_1 ); //使用优先级分组1
3.NVIC_Init
函数原型:void NVIC_Init (NVIC_InitTypeDef*NVIC_InitStruct)
功能:根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器。
参数:NVIC_InitStruct:指向结构NVIC_InitTypeDef的指针,包含了外设GPIO的配置信息。
返回值:无
参数:NVIC_InitTypeDef structure,定义于文件“stm32f10x_nvic.h”:
typedef struct
{
u8 NVIC_IRQChannel;
u8 NVIC_IRQChannelPreemptionPriority;
u8 NVIC_IRQChannelSubPriority;
FunctionalState NVIC_IRQChannelCmd;
}
NVIC_InitTypeDef;
NVIC_IRQChannel,使能或者失能指定的IRQ通道
NVIC_IRQChannelPreemptionPriority,设置成员NVIC_IRQChannel中的先占优先级,设置范围取决于NVIC_PriorityGroup。
NVIC_IRQChannelSubPriority,设置成员NVIC_IRQChannel中的次占优先级,其设置范围取决于NVIC_PriorityGroup。
NVIC_IRQChannelCmd,指定在成员NVIC_IRQChannelCmd中定义的IRQ通道被使能还是失能。这个参数取值为ENABLE或DISABLE。
例子:
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig (NVIC_PriorityGroup_1 ); //使用优先级分组1
//开启TIM3全局中断,赋予其先占优先级0,次占优先级2。
NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure(&NVIC_InitStructure);
4.EXTI_Init
函数原型:void EXTI_Init (EXTI_InitTypeDef*EXTI_InitStruct)
功能:根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
参数:EXTI_InitStruct:指向结构EXTI_InitTypeDef的指针,包含了外设EXTI1的配置信息
返回值:无
参数:EXTI_InitTypeDef structure,定义于文件stm32f10x_exti.h.
typedef struct
{
u32 EXTI_Line;
EXTIMODE_TypeDef EXTI_MODE;
EXTIrigger_TypeDef EXTI_Trigger;
FunctionalState EXTI_LineCmd;
}
EXTI_InitTypeDef;
EXTI_Line,选择待使能或者失能的外部中断线路。
EXTI_Mode,设置被使能线路的模式。
EXTI_Trigger,设置被使能线路的触发边沿。
EXTI_LineCmd,用来定义选中线路的新状态。它可以被设为ENABLE或DISABLE。
例子:
//开启外部中断12和14通道,并设置为下降沿触发。
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line=EXTI_Line12 | 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);
5.EXTI_GenerateSWInterrupt
函数原型:void EXTI_GenerateSWInterrupt (u32 EXTI_Line)
功能:产生一个软件中断
参数:EXTI_Line:产生软件中断的EXTI线路
返回值:无
例子:
EXTI_GenerateSWInterrupt (EXTI_Line6); //在外部中断6通道上产生软件中断