如何配置外部中断,一共分为五步。
1) 初始化用来产生中断的 GPIO;
2) 配置 NVIC;
3) 初始化 EXTI;
4) 选择 EXTI 的信号源
5) 编写中断服务函数;
下面进行具体操作。
- 初始化用来产生中断的 GPIO
1.打开GPIO对应的时钟。
2.初始化GPIO_InitTypeDef结构体。
3.调用GPIO_Init()函数。
代码如下:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStruct);
- 配置NVIC
1.配置中断优先级分组
2.初始化 NVIC_InitTypeDef 结构体,设置抢占优先级和子优先级,使能中断请求。NVIC_InitTypeDef 结构体在固件库头文件 misc.h 中定义。
a. NVIC_IROChannel:用来设置中断源,不同的中断中断源不一样,且不可写错,即使写错了程序也不会报错,只会导致不响应中断。具体的成员配置可参考 stm32f10x.h 头文件里面的 IRQn_Type结构体定义,这个结构体包含了所有的中断源。
b. NVIC_IRQChannelPreemptionPriority:抢占优先级,具体的值要根据优先级分组来确定,具体参考表格优先级分组真值表 优先级