首页 > 其他分享 >工程从keil移植到cube ide 无法进入stop mode的问题

工程从keil移植到cube ide 无法进入stop mode的问题

时间:2024-01-11 12:00:57浏览次数:35  
标签:cube PWR keil 中断 stop 定时器 停止 HAL 时钟

我们公司不准再使用keil了,得换成cube ide,于是我要把之前的工程移植到cube ide上。这次移植的工程里,有一个进入stop mode低功耗的功能。

我在keil中使用的标准库实现:当没有触发外部中断(外部中断脚接了一个传感器的中断脚,通过传感器的中断来唤醒停止模式)的时候进入停止模式:

if(it_flag != 1)
{
    //进入stop mode
    PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
    SystemInit(); //重新初始化时钟
}

这样写是可以进入stop mode的,当有任意外部中断来的时候,则退出停止模式。

移植到cube ide上之后(转换为hal库),却无法进入停止模式。Debug中发现,没有外部中断的时候,有进入停止模式的函数里,但没有在__WFI()里等待外部中断的到来,就继续执行下一行了。可以肯定此时传感器的中断没有触发。那是什么原因导致退出了停止模式呢?

 我想到我有开了一个定时器中断,不知道是不是定时器中断的缘故,导致退出了停止模式。于是我在进入停止模式之前关闭了定时器中断的代码。但是并没有什么用处...看来定时器的中断应该不是影响进入停止模式的因素。

HAL_TIM_Base_Stop_IT(&htim3);//关闭timer3中断
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
SystemClock_Config(); //重新初始化时钟
HAL_TIM_Base_Start_IT(&htim3); //重新打开timer3中断

此时只能求助强大的网络了,参考了这位博主的博客:https://blog.csdn.net/lmx11040101/article/details/85785336

这位博主有开一个systick中断,而我开了定时器中断,那我应该把定时器中断的时钟关掉。

HAL_RCC_TIM3_CLK_DISABLE();//关闭timer3时钟
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
SystemClock_Config(); //重新初始化时钟
HAL_RCC_TIM3_CLK_ENABLE(); //重新打开timer3时钟

关掉之后,在进入停止模式时,没有再被唤醒,直到外部中断产生才能被唤醒。

总结:进入低功耗之前,应该关闭不需要的外设时钟,退出低功耗后,重新使能外设是时钟。

标签:cube,PWR,keil,中断,stop,定时器,停止,HAL,时钟
From: https://www.cnblogs.com/Kim-blog/p/17958227

相关文章

  • STM32CubeMX教程12 DMA 直接内存读取
    使用STM32CubeMX软件配置STM32F407开发板上串口USART1进行DMA传输数据,然后实现与实验“STM32CubeMX教程9USART/UART异步通信”相同的目标1、准备材料开发板(正点原子stm32f407探索者开发板V2.4)ST-LINK/V2驱动STM32CubeMX软件(Version6.10.0)keilµVision5IDE(MDK-Arm)CH340G......
  • stm32 CubeMx 怎么实现SD卡/sd nand FATFS读写测试
    本实验仅用于记录和分享技术经验若涉及侵权请联系我删除。stm32CubeMx实现SD卡/sdnandFATFS读写测试。材料:stm32F407ZGT6开发板、雷龙公司的SD_NAND测试板(CSNP1GCR01-AOW)。(一开始是使用Nandflash的操作起来不太方便而且stm32cubemx自带的fatfs还没有磨损平衡算......
  • stm32学习总结:6、Proteus8+STM32CubeMX+MDK仿真蜂鸣器及ADC读取电压(Proteus标签整理原
    stm32学习总结:6、Proteus8+STM32CubeMX+MDK仿真蜂鸣器及ADC读取电压(Proteus标签整理原理图)文章目录stm32学习总结:6、Proteus8+STM32CubeMX+MDK仿真蜂鸣器及ADC读取电压(Proteus标签整理原理图)一、前言二、资料收集三、STM32CubeMX配置按键及蜂鸣器连接口1、按键及LED的IO口配置2、......
  • stm32学习总结:5、Proteus8+STM32CubeMX+MDK仿真串口并使用串口打印日志(注意重定向prin
    stm32学习总结:5、Proteus8+STM32CubeMX+MDK仿真串口并使用串口打印日志(注意重定向printf到串口打印的问题)文章目录stm32学习总结:5、Proteus8+STM32CubeMX+MDK仿真串口并使用串口打印日志(注意重定向printf到串口打印的问题)一、前言二、资料收集三、注意事项四、STM32CubeMX配置五、......
  • KEIL的使用方法
    Keil是一款集成开发环境(IDE),主要用于嵌入式系统的软件开发。以下是Keil的基本使用方法:安装Keil软件:首先需要从官网下载Keil软件,然后按照提示进行安装。创建新项目:打开Keil软件,点击“Project”菜单,选择“NewProject”,在弹出的窗口中输入项目名称和保存路径,选择目标芯片类型,然......
  • [转帖]Linux中的lstopo命令(详细指南)
    https://juejin.cn/post/7117544110856077343 目录:简介语法命令总结参考文献介绍lstopo命令是用来显示系统的拓扑结构的。它提供了关于NUMA内存节点、共享缓存、CPU包、处理器内核和线程等信息。语法它渲染由hwloc发现的机器拓扑结构,有两种主要模式:文本渲染或图......
  • ZCube:在我的优惠券中的落地实践 | 京东云技术团队
    前言我的优惠券作为营销玩法的一种运营工具,在营销活跃场中起到很至关重要的作用。如何更加高效的赋能业务,助理业务发展,灵活扩展业务,是我们一直追求和思考的方向一、背景1.1现状营销中台作为券的“供应链端”,控制券的所有类型。我的优惠券作为工具,提供用户已有优惠券的展示列表,不......
  • STM32CubeMX教程1 工程建立
    1、准备材料开发板(STM32F407G-DISC1)ST-LINK/V2驱动STM32CubeMX软件(Version6.10.0)keilµVision5IDE(MDK-Arm)2、实验目标使用STM32CubeMX软件建立一个STM32F407的空工程3、建立流程3.1、打开STM32CubeMX软件如下图所示为STM32CubeMX软件主界面3.2、开始建立工程单击......
  • 通过keil内置标准库创建stm32工程
    通过keil内置标准库创建stm32工程.mdkeil如果安装的有对应的标准库的话是可以不通过使用模板工程进行文件创建的。具体操作如下:1.跟51一样选择对应芯片型号,创建工程即可。2.注意!!!这个窗口就是标准库的配置窗口,勾选上便可在工程内使用标准库。3.一个基本的标准库工程至少应......
  • SSAS 同步CUBE 数据库配置完整说明(含添加定时任务)
     SSAS同步数据库步骤说明 二台机器设置相同的windows用户和密码cube_sync_user/***二台SSAS服务>安全性,添加用户 cube_sync_user,具有管理员权限  在SQL服务器配置中心里设置ssas的登录用户为 cube_sync_user   在目标数据库点击同步......