EXTI学习笔记—GPIO外部中断代码
2019-05-16 10:57
183 查看
*编程要点
1-初始化要连接到EXTI的GPIO
2-初始化EXTI用于产生中断/事件
3-初始化NVIC,用于处理中断
4-编写中断服务函数
5-main函数 *
c文件:
#include "bsp_exti.h" static void EXTI_NVIC_Config(void) //static限定 只能被此c文件调用 { NVIC_InitTypeDef NVIC_InitStruct; //初始化NVIC结构体 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //中断优先级分组 NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn; //选择中断源EXTI0,这里要特别注意当选择EXTI9_5 EXTI15_10 NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1; //主优先级,数字越小,优先级越高 NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1; //子优先级 NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; //开总中断 NVIC_Init(&NVIC_InitStruct); //结构体成员写入寄存器 &取地址 } void EXIT_Key_Config(void) { GPIO_InitTypeDef GPIO_InitStruct; //初始化GPIO结构体 EXTI_InitTypeDef EXTI_InitStruct; //初始化EXTI结构体 // 配置中断优先级 EXTI_NVIC_Config(); //调用函数 // 初始化GPIO RCC_APB2PeriphClockCmd(KEY1_INT_GPIO_CLK, ENABLE); //开GPIO时钟 GPIO_InitStruct.GPIO_Pin = KEY1_INT_GPIO_PIN; //选脚GPIO_Pin_0 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入 GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStruct); //初始化GPIOA端口 // 初始化EXTI 及 EXTI结构体 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //开AFIO时钟 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); //选择PA端口0脚 PA0 EXTI_InitStruct.EXTI_Line = EXTI_Line0; //选择Line0 EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt; //中断模式 EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿触发 EXTI_InitStruct.EXTI_LineCmd = ENABLE; //使能中断屏蔽事件寄存器 EXTI_Init(&EXTI_InitStruct); //结构体成员写入寄存器 &取地址 }
h文件:
#ifndef __BSP_EXTI_H #define __BSP_EXTI_H #include "stm32f10x.h" #define KEY1_INT_GPIO_PIN GPIO_Pin_0 #define KEY1_INT_GPIO_PORT GPIOA #define KEY1_INT_GPIO_CLK RCC_APB2Periph_GPIOA void EXIT_Key_Config(void); #endif /* __BSP_EXTI_H */
中断服务函数:
void EXTI0_IRQHandler (void) { if(EXTI_GetITStatus(EXTI_Line0) != RESET) //判断中短线有没有置位 { LED_G_TOGGLE; //led反转 } EXTI_ClearITPendingBit(EXTI_Line0); //清除中断标志位,不然一直在中断里 }
相关文章推荐
- K60 GPIO外部中断
- arm11 s3c6410 外部中断实验代码
- S32K系列S32K144学习笔记——GPIO外部中断
- STM32简单入门程序分析之GPIO,外部中断
- 用龙芯1c库在RT-Thread下实现外部中断(GPIO中断、按键中断)
- STM32 GPIO外部中断总结
- (4.2)uboot详解——外部中断(GPIO)
- LPC1788的外部中断和GPIO中断
- imx6系列--将一个gpio设置为可唤醒系统的外部中断流程
- STM32F103 GPIO的外部中断的使用例子。
- ARM7测试外部方波信号(利用GPIO口和定时器中断)
- GPIO初探之按键的外部中断
- STM32CubeMX学习教程之二:GPIO输入之外部中断
- LPC1768外部中断与GPIO中断
- 一知半解学CubeMX——GPIO:外部(按键)中断
- LPC1768菜鸟学习之GPIO和外部中断
- stm32L151的GPIO外部中断调试
- 关于KVM中处理外部中断的处理代码
- 【DSP】TMS320F28035 GPIO外部中断例程
- imx6系列--将一个gpio设置为可唤醒系统的外部中断流程