现象:调试STM32F411低功耗的时候,使用的PA1做个唤醒源,发现在没有触发EXTI的时候,MCU居然被唤醒。

原因:PA1配置成EXTI(上拉输入),经常被误触发

解决方式:将PA1配置成浮空输入,并且外部上拉一个4.7k电阻,就不会误触发了。

这种bug的原因一直没有搞清,先记下省的以后就忘记了,猜测可能是STM32芯片bug。

EXTI配置代码如下:

void TM_SetExit(FunctionalState State)
{
//PA1
#define REQUEST_PORT GPIOA
#define REQUEST_PIN GPIO_Pin_1
#define REQUEST_CLK_BUS RCC_AHB1Periph_GPIOA
#define REQUEST_PORT_SRC EXTI_PortSourceGPIOA
#define REQUEST_PIN_SRC GPIO_PinSource1
#define REQUEST_EXTI_LINE EXTI_Line1
#define REQUEST_NVIC_CHANNEL EXTI1_IRQn

GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;

RCC_AHB1PeriphClockCmd(REQUEST_CLK_BUS, ENABLE);
GPIO_InitStructure.GPIO_Pin = REQUEST_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//GPIO_PuPd_UP;
GPIO_Init(REQUEST_PORT, &GPIO_InitStructure);
SYSCFG_EXTILineConfig(REQUEST_PORT_SRC, REQUEST_PIN_SRC);

NVIC_InitStructure.NVIC_IRQChannel = REQUEST_NVIC_CHANNEL;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 6;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = State;
NVIC_Init(&NVIC_InitStructure);

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_LineCmd = State;
EXTI_InitStructure.EXTI_Line = REQUEST_EXTI_LINE;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitStructure);
EXTI_ClearITPendingBit(REQUEST_EXTI_LINE);
}

STM32F401 外部中断误触发问题的更多相关文章

  1. 嵌入式单片机,ATmega328P,外部中断INT0,INT1,INT2,中断标志位介绍

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  2. 向linux内核中添加外部中断驱动模块

    本文主要介绍外部中断驱动模块的编写,包括:1.linux模块的框架及混杂设备的注册.卸载.操作函数集.2.中断的申请及释放.3.等待队列的使用.4.工作队列的使用.5.定时器的使用.6.向linux内 ...

  3. 单片微机原理P2:80C51外部中断与定时器系统

    0. 外部中断 书上的废话当然是很多的了,对于中断我想大家应该早就有一个很直观的认识,就是"设置断点,执行外部外码,然后返回断点"这样的三个过程.中断给系统提供了一个良好的响应模式 ...

  4. STM32F103ZET6外部中断

    1.EXTI功能 外部中断/事件控制器EXTI管理了STM32的20个中断/事件线. EXTI的功能框图如下: 在功能框图中,可以看到很多在信号线上打了一个斜杠并标注“20”的字样,这是表示在STM3 ...

  5. STM32f103之外部中断

    一.背景 有个需求,IO口检测上升沿,然后做相应的动作.在此记录STM32F103的外部中断结构及配置方法, 以备下次快速上手使用. 有许多不太明白,又是老司机(:-D)帮忙,真的是站在别人的肩膀上会 ...

  6. STM32之EXTI——外部中断

    互联网的广大网友,大家早上中午晚上好.EXTI...故名思义..EX表外,出..I表示Intrrupt..所以合起来就是外部中断...说到这..我觉得我最近的六级水平(背单词)又进了一步,稍微自夸了下 ...

  7. 转别人的 STM32外部中断使用注意事项

    前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark. 一:触发方式 STM32 的外部中断是通过边沿来触发的,不支持电平触发: 二:外部中断分组 ST ...

  8. STM32外部中断初理解

    PA0,PB0...PG0--->EXTI0 PA1,PB1...PG1--->EXTI1 ....... PA15,PB15...PG15--->EXTI15 以上为GPIO和中断 ...

  9. STM32——外部中断EXIT实现

    外部中断实现步骤: 一.初始化,包括:1.AFIO时钟中断和GPIO时钟使能:                          2.GPIO初始化                           ...

随机推荐

  1. 记录一次MyEclipse打开jsp文件出现Error的解决办法

    今天正在忙着写项目,在打开一个项目内的jsp文件时发现我亲爱的代码消失了. 最后从网上找到了解决办法,希望可以帮到有需要的人,也作为个人记录 第一步:找到安装路径MyEclipse\configura ...

  2. java 类的初始化顺序

    有父类 1. 父类static成员变量 2. 父类static块 3. 父类非static成员 4. 父类非static块 5. 父类构造方法 子类,也按照1-5顺序执行 无父类 1. static成 ...

  3. javascript连连看

    经测试,IE,Firefox,Chrome,Opera可用. 连接线最多2个拐角.秘籍为:开始后连续输入zycjwdss 还剩0对   对数字 高度: 宽度: // 0)return 1;//IE i ...

  4. JNDI是什么

    参考文章:---为什么 追本溯源 http://www.cnblogs.com/xx0405/p/5332198.html jndi在Spring和tomcat下的使用: https://www.cn ...

  5. 发现一个非常有趣好用的git博主,收录热门OC、swift项目三方架构

    日常学习: https://github.com/iOShuyang/Book-Recommend-Github

  6. idea 优先引用项目代码,而非jar包

    1.现有项目,和jar包源码在同一层目录 2.idea直接打开ccccc,右键a,b两个文件中的pom.xml加入maven project,如下: 执行1,2 步骤,在b中引入a,刚引入a在最下方, ...

  7. Galaxy2D游戏引擎常见问题解答

    ◆Galaxy2D游戏引擎开源吗?    Galaxy2D游戏引擎不开源. ◆Galaxy2D相对HGE有何优点?    Galaxy2D相对HGE有以下优点:     (1)自带音频播放功能,HGE ...

  8. substr函数学习

    今天写了单词接龙这道恶心题,在想有没有函数能直接去返回string类型一个区间的字符串,没想到还真有,那就是sudstr 坑点 感觉这个函数有点逗比-- 别的都是str在前,这个偏要在后-- 也许是我 ...

  9. MySql查询问题select from

    一开始这样不行,后来把值用单引号引起来就行了SELECT * FROM reflectmastercore WHERE name=free 就像下面这样 SELECT * FROM reflectma ...

  10. Spring NoSuchBeanDefinitionException原因分析

    摘要:摘要:本文译自EugenParaschiv文章SpringNoSuchBeanDefinitionException原文链接:/2014th7cj/d/file/p/20161012/dv5o0 ...