STM32外部中断
来源:互联网 发布:pcb编程工装夹具 编辑:程序博客网 时间:2024/05/29 15:27
STM32每个引脚都可以作为外部中断使用,
1、代码
外部中断初始化程序:
//外部中断服务程序void EXTI_Config(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource, uint32_t EXTI_Line, uint8_t NVIC_IRQChannel){ GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; //使能时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //使能复用功能时钟 //GPIO Structure GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //PB5 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //Set Frequency 50MHz GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ; //上拉输入 GPIO_Init(GPIOE, &GPIO_InitStructure); //【中断端口、中断线】以及【中断初始化配置】,下降沿触发 GPIO_EXTILineConfig(GPIO_PortSource, GPIO_PinSource); EXTI_InitStructure.EXTI_Line = EXTI_Line; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器 //NVIC初始化配置 NVIC_InitStructure.NVIC_IRQChannel = NVIC_IRQChannel; //使能PA15的外部中断通道 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01; //抢占优先级1, NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03; //子优先级3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道 NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器}
外部中断处理程序
u8 ifconfig = 0; //全局变量,中断发生标志,进入中断以后将该位置1//外部中断4服务程序 void EXTI4_IRQHandler(void){ mydelay(10);//消抖 if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4) == 0)//确认按下 { ifconfig = 1; } EXTI_ClearITPendingBit(EXTI_Line4); //清除LINE15上的中断标志位 }
阅读全文
0 0
- STM32外部中断测试
- STM32外部中断测试
- STM32外部中断总结
- STM32外部中断
- STM32外部中断设置
- STM32外部中断
- STM32外部中断
- STM32外部中断详解
- STM32外部中断详解
- STM32外部中断
- STM32外部中断详解
- STM32 外部中断
- 关于STM32外部中断
- STM32外部中断
- STM32 外部中断
- STM32 外部中断
- stm32外部中断
- stm32 外部中断学习
- spring+spring-mvc+mybatis框架权限的实现
- JVM + JMM
- 提交本地项目到github
- Oracle RMAN -不完全恢复
- echarts图表动态获取后台数据详解(一)
- STM32外部中断
- java异步编程
- NPM 设置代理
- 这一年的互联网人
- mysql数据库——查询结果集
- ubuuntu 禁用笔记本键盘
- 程序员还需要精通英语吗?
- 阿里云大数据助理工程师认证
- 55. Jump Game