现象:调试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. POSIX标准 库文件

    POSIX标准定义的必须的头文件(26项) 头文件 说明 头文件 说明 <dirent.h> 目录项 <fcntl.h> 文件控制 <fnmatch.h> 文件名匹 ...

  2. Linux基础入门-文件打包与解压缩

    文件打包与解压缩: Windows上常见的压缩文件后缀有*.zip(zip程序打包压缩), *.rar(rar程序压缩), *.7z(7zip程序压缩),在Linux上常见的还有*.gz(gzip程序 ...

  3. Java开发中判断集合类为空的方法-转载

    避免写两个判断 org.springframework.util.CollectionUtils 方法: public static boolean isEmpty(Collection collec ...

  4. 【java】package

    总结: 包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰. 不同包中的子类还可以直接访问父类中被protected权限修饰的成员. 包与包之间可以使用的权限只有两种,publi ...

  5. isp

    Lens Shading可细分为Luma Shading(亮度均匀性)和Color Shading(色彩均匀性)两种.其中,Luma Shading就是我们常说的暗角.既图像呈现出中心区域较亮,四周偏 ...

  6. 前端-JavaScript2-1——JavaScript基础复习及上次作业答案

    昨天讲解的JS是编程最最简单的一些基础知识,复习一下: JavaScript书写环境,<script>标签 1    <script type=”text/javascript”&g ...

  7. Ubuntu 12.04 LTS 查看网关地址方法汇总

    来源:http://blog.csdn.net/duyiwuer2009/article/details/26263855 1. ip route show $ ip route show defau ...

  8. spring boot websocket stomp 实现广播通信和一对一通信聊天

    一.前言 玩.net的时候,在asp.net下有一个叫 SignalR 的框架,可以在ASP .NET的Web项目中实现实时通信.刚接触java寻找相关替代品,发现 java 体系中有一套基于stom ...

  9. redis过期机制(官网文档总结)

    官网地址:https://redis.io/commands/expire redis过期定义如下: Set a timeout on key. After the timeout has expir ...

  10. java-设计模式-索引

    设计模式的七大原则 设计模式遵循的七大原则 微信红包的设计实践 单例模式 常见的几种单例模式写法 单例模式的应用场景及优缺点 面向对象六大设计原则 JAVA设计模式之观察者模式 JAVA设计模式之策略 ...