现象:调试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);
}

最新文章

  1. Celery 框架学习笔记
  2. jquery easyui的treegrid的控制
  3. C#==>匿名方法 【转】
  4. Django 源码小剖: Django 对象关系映射(ORM)
  5. Java API —— 泛型
  6. 让Visual Studio 2015 支持ASP.NET MVC4.0.0.1
  7. JNI|在子线程中获得JNIEnv|AttachCurrentThread
  8. sql查询结果集根据指定条件排序的方法
  9. ListView 的position和id的区别
  10. Hibernate学习之表一对多,多对一关系
  11. 查询ID为5的数据的前后各一行数据,ID不连续
  12. Appium和Robotium在文字输入上的区别
  13. 翻译:MLAPP(2.3节 一些常见的离散分布)
  14. Minimize the error CodeForces - 960B
  15. 下拉框、下拉控件之Select2。自动补全的使用
  16. String对象的属性和方法
  17. SpringMVC @ResponseBody 406
  18. C#调用迅雷下载,调用迅雷影音播放
  19. maven的安装与基本使用
  20. iOS ReplayKit实时录制屏幕实现方案的细节记录

热门文章

  1. 嵌入式C语言预处理使用
  2. 剑指offer 5.栈和队列 用两个栈实现队列
  3. webpack打包vue -->简易讲解
  4. 360或者金山毒霸可能会导致HP网络打印机驱动安装失败“数据无效”的解决办法
  5. 解决WIN7第一次开机冷启动QQ未响应的办法
  6. bzoj5104: Fib数列
  7. kali syn洪水攻击实例
  8. Windows下安装Python虚拟环境
  9. [UE4]Static Mesh的碰撞体
  10. 访问arcserver中的featureServer服务