历史上的今天
返回首页

历史上的今天

今天是:2024年11月07日(星期四)

正在发生

2019年11月07日 | STM8S AWU低功耗模式

2019-11-07 来源:eefocus


/**

  **********************************  STM8S  ***********************************

  * @文件名     : bsp_awu.c

  * @作者       : strongerHuang

  * @库版本     : V2.2.0

  * @文件版本   : V1.0.0

  * @日期       : 2017年05月10日

  * @摘要       : 自动唤醒源文件

  ******************************************************************************/

/*----------------------------------------------------------------------------

  ----------------------------------------------------------------------------*/

/* 包含的头文件 --------------------------------------------------------------*/

#include "AWU.h"

 

#include "stm8s_awu.h"

#include "stm8s_tim3.h"

/************************************************

函数名称 : AWU_LSIMeasurement

功    能 : LSI时钟测量

参    数 : 无

返 回 值 : 无

作    者 : strongerHuang

*************************************************/

uint32_t AWU_LSIMeasurement(void)

{

  uint32_t lsi_freq_hz = 0x0;

  uint32_t fmaster = 0x0;

  uint16_t ICValue1 = 0x0;

  uint16_t ICValue2 = 0x0;

 

  /* Get master frequency */

  fmaster = CLK_GetClockFreq();

 

  /* Enable the LSI measurement: LSI clock connected to timer Input Capture 1 */

  AWU->CSR |= AWU_CSR_MSR;

 

#if defined (STM8S903) || defined (STM8S103) || defined (STM8S003)

  /* Measure the LSI frequency with TIMER Input Capture 1 */

 

  /* Capture only every 8 events!!! */

  /* Enable capture of TI1 */

TIM1_ICInit(TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI, TIM1_ICPSC_DIV8, 0);

 

  /* Enable TIM1 */

  TIM1_Cmd(ENABLE);

 

  /* wait a capture on cc1 */

  while((TIM1->SR1 & TIM1_FLAG_CC1) != TIM1_FLAG_CC1);

  /* Get CCR1 value*/

  ICValue1 = TIM1_GetCapture1();

  TIM1_ClearFlag(TIM1_FLAG_CC1);

 

  /* wait a capture on cc1 */

  while((TIM1->SR1 & TIM1_FLAG_CC1) != TIM1_FLAG_CC1);

  /* Get CCR1 value*/

  ICValue2 = TIM1_GetCapture1();

  TIM1_ClearFlag(TIM1_FLAG_CC1);

 

  /* Disable IC1 input capture */

  TIM1->CCER1 &= (uint8_t)(~TIM1_CCER1_CC1E);

  /* Disable timer2 */

  TIM1_Cmd(DISABLE);

 

#else  

  /* Measure the LSI frequency with TIMER Input Capture 1 */

 

  /* Capture only every 8 events!!! */

  /* Enable capture of TI1 */

  TIM3_ICInit(TIM3_CHANNEL_1, TIM3_ICPOLARITY_RISING, TIM3_ICSELECTION_DIRECTTI, TIM3_ICPSC_DIV8, 0);

 

  /* Enable TIM3 */

  TIM3_Cmd(ENABLE);

 

/* wait a capture on cc1 */

  while ((TIM3->SR1 & TIM3_FLAG_CC1) != TIM3_FLAG_CC1);

/* Get CCR1 value*/

  ICValue1 = TIM3_GetCapture1();

  TIM3_ClearFlag(TIM3_FLAG_CC1);

 

  /* wait a capture on cc1 */

  while ((TIM3->SR1 & TIM3_FLAG_CC1) != TIM3_FLAG_CC1);

    /* Get CCR1 value*/

  ICValue2 = TIM3_GetCapture1();

TIM3_ClearFlag(TIM3_FLAG_CC1);

 

  /* Disable IC1 input capture */

  TIM3->CCER1 &= (uint8_t)(~TIM3_CCER1_CC1E);

  /* Disable timer3 */

  TIM3_Cmd(DISABLE);

#endif /* STM8S903 || STM8S103*/

 

  /* Compute LSI clock frequency */

  lsi_freq_hz = (8 * fmaster) / (ICValue2 - ICValue1);

  

  /* Disable the LSI measurement: LSI clock disconnected from timer Input Capture 1 */

  AWU->CSR &= (uint8_t)(~AWU_CSR_MSR);

 

 return (lsi_freq_hz);

}

 

/************************************************

函数名称 : AWU_Initializes

功    能 : AWU自动唤醒

参    数 : 无

返 回 值 : 无

作    者 : strongerHuang

*************************************************/

void AWU_Initializes(void)

{

  AWU_LSICalibrationConfig(AWU_LSIMeasurement());//校正LSI时钟

  AWU_Init(AWU_TIMEBASE_30S);                     //初始化AWU

  enableInterrupts();

}

 

 

进入停机模式前可以关闭不需要的电源等,修改单片机IO口等。


halt();                    //进入停机模式


中断发生后要清除标志位:  AWU_GetFlagStatus();


可以与窗口看门狗一起用,但不能与独立看门狗一起用。

推荐阅读

史海拾趣

AOS公司的发展小趣事

随着技术的不断发展和市场的扩大,AOS公司开始积极寻求全球扩张的机会。1998年,AOS在南京独资成立了中国总部,开始了其在中国的深耕之旅。通过多年的努力,AOS在中国建立了完善的产研基地和销售网络,其产品横跨家用和商用两大领域,赢得了广大消费者的信任和喜爱。如今,AOS已成为中国市场上备受推崇的热水设备品牌之一。

爱普特半导体(APTSEMI)公司的发展小趣事

在电子行业发展的浪潮中,爱普特半导体(APTSEMI)始终坚持自主创新的发展道路。公司自创立之初,就致力于研发具有自主知识产权的微处理器芯片。面对国外技术封锁和市场垄断的困境,爱普特团队不畏艰难,投入大量研发资源,成功突破了多项技术难关,研发出了全国产、高可靠性的32位MCU产品。这些产品性能卓越,可与国际先进水平相媲美,为我国电子行业的自主可控发展贡献了重要力量。

Graseby Infrared公司的发展小趣事
电源电压不稳定或波动过大可能导致接触器吸合不稳定。
Daito Communication Apparatus Co Ltd公司的发展小趣事

随着微电子学的快速发展,电子设备对元器件的要求也越来越高。Daito公司敏锐地捕捉到了这一市场趋势,决定对保险丝进行进一步的创新。在1995年,他们成功开发出了适用于电路板安装的高精度小型报警保险丝。这一产品的推出,不仅满足了市场对小型化、高精度保险丝的需求,也进一步巩固了Daito公司在电子行业中的领先地位。

随后,Daito公司又针对微电子学的进一步发展,推出了可以连续自动安装的方形微型保险丝。这一产品的推出,大大提高了生产效率,降低了成本,同时也为客户提供了更加便捷的使用体验。近年来,随着面安装技术的兴起,Daito公司又迅速推出了适用于面安装技术的片状保险丝,再次展示了他们在电子行业中的创新实力。

请注意,由于篇幅限制,以上仅为两个故事示例。如果需要更多故事,可以进一步深入研究和探索Daito公司在电子行业中的发展历程和创新实践。

ARCOLECTRICSWITCHES公司的发展小趣事

在市场竞争日益激烈的情况下,ARCOLECTRIC SWITCHES公司始终坚持质量至上的原则。公司建立了完善的质量管理体系,从原材料采购到生产加工、产品检验等各个环节都严格把关,确保产品质量符合客户要求。同时,公司不断创新升级产品,推出更加智能化、节能环保的新型开关产品,满足市场不断变化的需求。

Belden Wire and Cable公司的发展小趣事

在第二次世界大战期间,Belden公司积极响应国家号召,将生产重心转向战争材料。其产品被广泛应用于坦克、飞机、移动无线电、潜艇、船舶、吉普车等各种军事机械中,为战争的胜利做出了重要贡献。这一时期的生产转型不仅展现了公司的社会责任感,也进一步提升了其在行业内的地位和影响力。

问答坊 | AI 解惑

TMS320F28xx的硬件设计指南

TMS320F28xx的硬件设计指南…

查看全部问答>

12864液晶模块问题

一样是12864液晶控制模块,12864M和GDM12864C控制方法就不一样了。请问一下还有哪几种液晶控制模块,比如12864J,12864D等等。 是不是12864后面紧跟的字母一样,控制方法就一样呢?…

查看全部问答>

C#短信收发中间件的开发(设计)

基于GSM的短信收发中间件,用.NET平台设计,各位老大有实践经验的说下在.NET平台下的设计步骤(就是关键点在哪个地方)…

查看全部问答>

WINCE中串口类的问题?

按照《EVC高级编程及其应用开发》的实例写了一个串口。 程序中有这样一句: private:         CCESeries m_ceSeries; //定义串口类 编译时就出现错误,显示: error C2146: syntax error : missing \';\' before identifi ...…

查看全部问答>

下面程序给我看看

 在9B96控制LCD的程序中 HWREG(LCD_WR_BASE + GPIO_O_DATA + (LCD_WR_PIN << 2)) = 0;          // WR=0        HWREG(LCD_WR_BASE + GPIO_O_DATA + ...…

查看全部问答>

我也建个2011电子设计大赛模拟放大类高级群

本帖最后由 paulhyde 于 2014-9-15 04:03 编辑 嘿嘿,论坛建的放大器的群满了,建了个高级群167334516,人再多我升级成500人的超级群  …

查看全部问答>

谁能告诉我怎样实现proteus7.7与keil u Vision2联机啊?

我刚开始学习电子,请问哪位同志能告诉我怎样实现proteus7.7与keil u Vision2联机工作(越详细越好)。谢谢了哈!…

查看全部问答>

平凡的单片机教程,很经典!

本文档是单片机教程,主要讲述89C51单片机,文档从单片机基础入手,逐步深入讲述,并结合大量的实验、实例形式,教授学习者学习单片机学习、开发、下载、设计等内容。         ----------------------------------------- ...…

查看全部问答>