/**
********************************** 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();
可以与窗口看门狗一起用,但不能与独立看门狗一起用。
上一篇:【STM8S】 独立看门狗
下一篇:瑞萨电子推出32位RX671 MCU,实现高性能和高能效
推荐阅读最新更新时间:2024-11-11 13:39
推荐帖子
- 给小弟推选两本书吧 1>数字电路 2>模拟电路
- 小弟是初学,给小弟推选两本书吧最最基础的书相对来说能更易理解的,或者初学入门较流行的书请注明书名和作者谢谢你的好心,祝你工作顺利!1数字电路2模拟电路给小弟推选两本书吧1>数字电路2>模拟电路没人回啊数字电路邱光源的不错模拟电路就那本绿皮色的书还不错大学教材里面的两本绿皮书就不错,适合初学者。模拟电子技术基础童诗白数字电子技术基础阎石帮顶,接分极力推荐两本书都是日本人写的书的名字我真记不起来了不过你到网络上搜一下只要是看过的没有
- kof2ooo 嵌入式系统
- 节能:电源管理持续增长驱动力
- 美国IR国际整流器公司中国区经理及高级技术顾问张为佐2005-7-22 1979年电力电子学会在我国成立以后,人们开始把用于大功率方向的器件,称之为电力半导体。由于微电子学把相关的器件称为微电子器件,从而也有了电力电子器件之称。电力半导体和电力电子器件两个名词几乎是同义词。 功率MOSFET的出现逐步改变了对功率半导体的传统理解。原有的电力电子器件,基本上是一种服务于电力、大电机传动、工业应用的器件。用电力来称谓功率以后,使从事电力电子技术的人,习
- zbz0529 电源技术
- 【问TI】贵司有没有驱动库的CHM文档
- 你好:我在骗程序时要用库函数,请问有没有CHM格式的,这样我可一边编一边查,这样比较快,呵呵【问TI】贵司有没有驱动库的CHM文档应该是没有,楼主可考虑自己做一个回复楼主ddllxxrr的帖子目前好像只有pdf的。回复楼主ddllxxrr的帖子TI的PDF版本查找也很方便啊,章节和函数都是可以直接点击并链接到相应内容的,楼主是否可以考虑改变一些使用习惯呢?回复楼主ddllxxrr的帖子都是PDF格式的。我试试看回复4楼beloved的帖
- ddllxxrr 微控制器 MCU
- C2000晒晒 + 自己DIY的F2407A学习板
- 这个板子是自己在2004年时设计的,基本上就是2407A的最小系统。扩展了RS232,CAN接口芯片同时参考网络上的并口JTAG的资料做了个JTAG调试工具! C2000晒晒+自己DIY的F2407A学习板速度真快呵呵,刚看到贴子楼主牛人啊可以把原理图分享下不2407A的原理图2407A没玩过啊不错
- 蓝雨夜 微控制器 MCU
- OpenHarmony3.0的树莓派4B移植-学习记录
- 前言以下是学习OpenHarmony3.0树莓派4B移植的详细流程记录,主要参考:官方移植指南,官方树莓派3B移植,社区大佬树莓派4B移植,LineageOS树莓派移植项目:lineage-rpi,Android树莓派移植项目:android-rpi。实现了触摸与显示,并添加了物理按键关机的功能。希望能给像我一样第一次接触移植的嵌入式小白以帮助。以下步骤操作于Ubuntu20.04LTS。OHOS3.0LTS源码解压自官方镜
- hazhuzhu Linux与安卓
- 无线充电器申请FCC认证一定要走PAG流程么?
- 随着无线时代的便捷,无线充也开始盛行,那么针对无线充产品出口到欧美国家有哪些需要注意的事项呢?无线充欧洲国家跟其他无线产品无太大差异,但是针对去美国需要做的FCC-ID认证,有几个注意事项,针对大于输出功率大于5W的无线充必须要在美国官网进行PAG的流程,时间在2个月内,测试在国内LCS即可完成只有如下的条件全部满足,PAG流程才会豁免:此内容由EEWORLD论坛网友EMC13590301687原创,如需转载或用于商业用途需征得作者同意并注明出处无线充电器申请F
- EMC13590301687 测试/测量
设计资源 培训 开发板 精华推荐
- 使用 Microchip Technology 的 MIC2873 的参考设计
- 使用 Semtech 的 SC4505 的参考设计
- LTC3119HFE 3.3V、400kHz 宽输入稳压器的典型应用电路
- 使用 Microchip Technology 的 MIC5159-1.8BM5 的参考设计
- STEVAL-MKI105V1,基于 LIS3DH 的适配器板,用于标准 DIL24 插座
- AD8034ART-REEL7 有限输入范围高速峰值检波器的典型应用电路
- T12电烙铁丐版
- 使用 Analog Devices 的 AD7476AAKSZ 的参考设计
- 【涂鸦智能】光固化打印-翻车伴侣
- C4935257_RN8209D芯片方案验证板