历史上的今天
返回首页

历史上的今天

今天是:2024年09月10日(星期二)

正在发生

2019年09月10日 | mpu6050 +STM32 休眠唤醒问题+低功耗

2019-09-10 来源:eefocus

这几天在调STM32+MPU6050实现   低功耗唤醒功


功能描述: 

1.  平时没有数据的时候,mcu处于 stop模式下,

2.  利用RTC实现定时唤醒,

3.以上功能中已经实现 mcu低功耗唤醒      及RTC定时唤醒。


下一步要尝试   mpu6050 有数据时唤醒单片机,平时单片机处于低功耗状态


如果有朋友也在做  mpu6050低功耗唤醒单片机的功能希望能够一起交流。


这里附上qq :1812669090  如果 要低功耗  和定时唤醒的代码欢迎和我联系


首先说一下STM32低功耗模式


这张表意思看一下就行,我这里用的是停止模式,理由很简单,任一中断都能唤醒,只不过唤醒后的配置相对待机模式要麻烦一点。


那么,第一个问题来了  我们的单片机如何才能进入到低功耗?这个时候,你应该考虑一个问题,在什么位置进入低功耗?这个需要根据你的项目需求是什么,如果你的项目需要单片机一上来进入低功耗,那就把 进入低功耗的指令放在main函数的最前面,当然这种情况几乎是不存在的因为我们在进入低功耗之前  肯定要做一些初始化配置。好了,接下来切入正题进入低功耗。在这之前你应该做好 


RCC_Enter_Stop();

这个函数里面封装了进入低功耗的指令,是我自己写的,我们来看一下函数里面的内容:


void RCC_Enter_Stop(void)

{

    

// RCC_PLLCmd(DISABLE); //关闭时钟

  MY_GPIO_AN();//将没有用的IO设置为  模拟输入模式

RTC_ClearFlag(RTC_FLAG_WUTF);//将RTC唤醒中断清除 

 

  Delay_ms(500);

/* Enable Wakeup Counter */

    RTC_WakeUpCmd(ENABLE);//在进入低功耗之前首先 要设置自己的唤醒源

    //这个不一定是RTC 要依据自己的唤醒源

 

    /* Enter Stop Mode */

    PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);//重点来了这个就是进入STOP

//模式的指令   这个函数是库函数,  咱们不用管

 

    /* Enable Wakeup Counter */

  //  RTC_WakeUpCmd(DISABLE);  //关闭RTC的计数器 为什么? 应为之后要对他进行配置 配置完成之

//后再去开启

    

    /* After wake-up from STOP reconfigure the system clock */

    /* Enable HSE */

    RCC_HSEConfig(RCC_HSE_ON);

//将外部32.768KHZ的外部时钟打开,因为在进入低功耗之后时钟被切换

//成了内部低频时钟, 所以想要让单片机回到正常工作模式 必须要从新打开时钟

   

 /* Wait till HSE is ready */

    while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET)

    {}   //等待时钟稳定

    

    /* Enable PLL */

    RCC_PLLCmd(ENABLE);

    

    /* Wait till PLL is ready */

    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)

    {}

    

    /* Select PLL as system clock source */

    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    

    /* Wait till PLL is used as system clock source */

    while (RCC_GetSYSCLKSource() != 0x0C)

    {}

}

这个我要说明一下,


1。将IO口设为  模拟输入模式,这里是最关键的,因为直接牵扯到你的硬件电路。我之前就吃了这个的亏,IO口设置没对,功耗一直在200uA一直下不来。


为什么?


1.硬件 ,可能你的板子上连了一大堆没用的器件,如果你的功能中没有用到这些器件最好把他们去掉。当然你要会看原理图别拆错而导致板子无法工作。


2.IO口状态,这里要说的并不是所有的IO口都要设为模拟,而是将没用到的IO口设置为模拟模式。如果IO口在电路中做了上拉或者下拉,那么你在进入低功耗之前就必须将IO口的状态设置为与硬件相同的模式(该上拉的上啦,该下拉的下拉),这里我把我项目中对IO口的操作里出来希望能有所启发。


void MY_GPIO_AN(void)

{

 

GPIO_InitTypeDef  GPIO_InitStructure;

// GPIO_DeInit(GPIOA);

// GPIO_DeInit(GPIOB);

// GPIO_DeInit(GPIOC);

 

 

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOC, ENABLE);

  

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_11|GPIO_Pin_8|GPIO_Pin_9|

GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_15|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; //

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

  GPIO_Init(GPIOA, &GPIO_InitStructure);

 

GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_12|GPIO_Pin_13|

GPIO_Pin_14|GPIO_Pin_15|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_9|GPIO_Pin_0|

GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_11;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; //

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_ResetBits(GPIOB,8);

GPIO_ResetBits(GPIOB,2);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; //

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init(GPIOC, &GPIO_InitStructure);

   

}

这段代码不再一一解释其实就是,我这里只是将没有用到的IO口设置为了模拟输入模式。


今后还会更新RTC配置低功耗唤醒功能。

推荐阅读

史海拾趣

Fascomp公司的发展小趣事

在快速发展的过程中,Fascomp始终注重企业文化建设和人才培养。公司倡导“创新、协作、务实、进取”的价值观,鼓励员工积极创新、勇于挑战。同时,公司还注重人才培养和引进,建立了一套完善的人才培养和激励机制。这些举措为公司的发展提供了坚实的人才保障。

Excelight Communications Inc公司的发展小趣事

作为一家有社会责任感的企业,Excelight始终关注社会公益事业。公司积极参与各类慈善活动和社会捐赠项目,为贫困地区的教育、医疗等事业做出了贡献。

此外,Excelight还注重环保和可持续发展。公司在生产过程中严格遵守环保法规和标准,积极采用环保材料和工艺。同时,Excelight还加强了节能减排和废弃物处理工作,努力实现绿色生产和可持续发展。

Efficient Power Conversion公司的发展小趣事

随着EPC公司在氮化镓技术领域的领先地位日益稳固,一些竞争对手开始试图通过不正当手段获取其技术。为了维护自身的合法权益,EPC公司积极寻求法律途径来保护其专利。2023年,EPC公司向美国联邦法院和美国国际贸易委员会提起诉讼,指控英诺赛科(珠海)科技有限公司及其子公司侵犯了其基础专利组合中的四项专利。这一诉讼引起了行业的广泛关注,也再次证明了EPC公司对专利保护的重视。

Heidenhain Corp公司的发展小趣事

随着智能制造的兴起,海德汉公司积极转型为智能制造解决方案提供商。该公司与多家电子企业合作,共同探索智能制造的新模式和新路径。通过集成海德汉的数控系统、自动化设备和智能管理软件,这些企业成功构建了高效、灵活、智能的生产体系。海德汉的智能制造解决方案不仅提高了生产效率和产品质量,还降低了生产成本和能耗,为电子行业的可持续发展做出了积极贡献。

BESTECH公司的发展小趣事

在全球化背景下,海德汉公司不断拓展其国际市场版图。通过参加国际展会、建立海外分支机构等方式,海德汉成功将其高精度数控系统和自动化解决方案推向全球电子市场。特别是在亚洲、欧洲和北美等电子产业发达的地区,海德汉的产品和技术得到了广泛应用和认可。这一市场拓展战略不仅提升了海德汉的品牌知名度和市场份额,也为其在电子行业的长期发展奠定了坚实基础。

需要注意的是,以上故事虽基于事实背景构建,但具体细节和案例可能有所虚构或简化,以符合问题要求和字数限制。

浙江凡华(FANHAR)公司的发展小趣事

随着电子行业的快速发展,Calex Mfg. Co., Inc.深知技术创新的重要性。公司投入大量研发资源,成功开发出一系列具有领先技术的电子产品。这些产品不仅性能卓越,而且具有高性价比,迅速赢得了市场的认可。公司凭借这些技术突破,逐渐在电子行业中占据了一席之地。

问答坊 | AI 解惑

为什么我的论文题目那么新。。。

为什么我的论文题目那么新。。。  课题:灯泡验光控制器设计 ,    网上都找不到相关的资料,   可恶。。。我同学的温控资料网上多得是,,郁闷中。。。    另求篇51的英文论文 毕业设计翻译用3000字就OK ...…

查看全部问答>

28027 flash烧写问题

不知各位遇到过TI C2000 Piccolo Microcontrollers不能烧写FLASH的问题没? 小弟遇到的问题如下: 软件配置:CCS3.3.82.13+F2802x_CSP_RTM.exe+FlashAPIInterface2802xV1_00a.out+F28027.CMD 硬件配置:TDS510仿真器+F28027最小系统板 问题 ...…

查看全部问答>

WINCE6 EVC编译问题

请教一个问题,我电脑上装了EVC,PB5.0,VS2005 + SP1,WINCE6.0R3 现在用EVC编译完成之后,就一直在那儿连接设备,也无法退出 只有用任务管理器强制结束。就算设备是链接上的,也没法使用。照样需要任务管理器帮忙。 …

查看全部问答>

STR750微控制器的车载控制平台的设计

该平台可以管理车辆控制系统、导航仪和音响等娱乐设备,并能监控车辆运行及环境信息。通过合理使用STR750的各种通信接口,满足车载控制系统的功能要求。要求按照实际需要设计出一个功能丰富的通用控制平台,进行软硬件系统设计,实现相应的功能。…

查看全部问答>

m_ctrlComm.SetOutput问题?

程序在窗口输入的情况下,一切正常。 但当把数据编入软件,不用输入,直接使用时,会提示错误。 下面这段程序,问题在那里? CByteArray m_1; m_1.SetSize(8); m_1[0]=0x01; m_1[1]=0x03; m_1[2]=0x00; m_1[3]=0x08; m_1[4]=0x00; m_1[5] ...…

查看全部问答>

flash数据丢失??

请教各位大侠,我用MSP430F149驱动光耦来控制VICOR模块的PC端,之前使用一直没有问题,后来客户说打开电源输出的时候有问题:电源接收到打开输出的指令后,开始有输出电压,但是很快降到0,反复操作一直都是这种现象,后来打开电源发现源头在单片机 ...…

查看全部问答>

CCS 中断函数的关键字

从\"__irq\"到“interrupt”:         #pragma INTERRUPT( int_handler [, interrupt_type] );         interrupt void int_handler()   & ...…

查看全部问答>

关于利用LM2576输出反极性电压的问题

我想用LM2576实现+36v变-5v,结果,当输入电压从0v开始增加时,在很低的电压附近,电源就保护了。我参照的电路如下,用的是LM2576s-5.0。请问这是什么原因?说明一点,供电电源没有问题。 …

查看全部问答>

谁会做这道关于MSP430的算术题,答对芯币奖励

题目是这样的: 使用容量为200mAh的3V的银锌纽扣电池CR2032为MSP430供电,MSP430能工作多久呢? 设定使用的MSP430为F20xx系列,那么看门狗工作的待机模式消耗电流为0.6uA,在CPU工作频率为1MHz的活动模式下消耗电流为300uA。大家知道在实际工作中 ...…

查看全部问答>