【STM8S】 AWU低功耗模式

发布者:Serene123最新更新时间:2021-10-19 来源: eefocus关键字:STM8S  AWU  低功耗模式 手机看文章 扫描二维码
随时随地手机看文章

/**

  **********************************  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  AWU  低功耗模式 引用地址:【STM8S】 AWU低功耗模式

上一篇:【STM8S】 独立看门狗
下一篇:瑞萨电子推出32位RX671 MCU,实现高性能和高能效

推荐阅读最新更新时间:2024-11-11 13:39

如何使用STM8S单片机的多通道AD转换
STM8S单片机的A/D结构简介: 具有ADC1 ADC2(部分型号没有ADC2)最多提供16个转换通道,A/D转换的各个通道可以执行单次和连续的转换模式。 1.电压0到Vdda; 2.在64和80引脚封装的有独立的Vref,其他的封装形式Vref连接在Vdda 3.续转换形式; 4.时间14个时钟周期; 5.10位转换精度; 6.产生转换结束中断; ADC1结构图 编程中注意的知识点: 过置位ADC_CR1寄存器的 ADON位来开启ADC。当首次置位ADON位时,ADC从低功耗模式唤醒。为了启动转换必须第二次使用写指令来置ADC_CR1寄存器的ADON 位。在转换结束时ADC会保持在上电状态,用
[单片机]
stm8s的内部时钟切换
要用到stm8s105k6的内部128K低速时钟,调试不是蛮顺利,特此记录下。 从内部16M时钟切换至内部128K时钟,配置如下: void Clk_Config(void) { CLK_CKDIVR= 0x00; //系统时钟 1 分频 while(!(CLK_ICKR & 0x02)); //等待 HSI 准备好 CLK_SWCR|=0x02; //开启切换 CLK_ICKR|=0x08; //开启LSI while(!(CLK_ICKR&0x10)); //LSI准备就绪 CLK_SWR=0xd2; //LSR
[单片机]
<font color='red'>stm8s</font>的内部时钟切换
STM8S触摸按键固件库详解
由于刚好有小项目需要用到触摸按键,stm8s可以节约一块触摸按键的片子,并且成本比较低。在某些对成本比较敏感的应用还是有价值的。现将自己网上找到的资料与自己学习的心得记下与大家分析。ST的底层库对滚动条也支持,效果还是不错的 一、原理分析 ST的电容式触摸按键方案通过一个电阻和感应电极的电容CX构成的阻容(RC)网络的充电/放电时间来检测人体触摸所带来的电容变化。 如上图所示,当人手按下时相当于感应电极上并联了一个电容Cx,增加了感应电极上的电容,感应电极进行充放电的时间会增加,从而检测到按键的状态。 先用开关将 Cs(或 Cs+Cx)上的电放尽,然后断开开关,让 R 给 Cs(或 Cs+Cx)充电,当没有手指触摸的时
[单片机]
<font color='red'>STM8S</font>触摸按键固件库详解
stm8s 时钟库函数选择内部RC初始化
//本文选择16M内部RC震荡,分频为1 即系统时钟为16M void CLK_HSICmd(FunctionalState NewState) { /* Check the parameters */ assert_param(IS_FUNCTIONALSTATE_OK(NewState)); if (NewState != DISABLE) { /* Set HSIEN bit */ CLK- ICKR |= CLK_ICKR_HSIEN; } else { /* Reset HSIEN bit */
[单片机]
MSP430低功耗模式-while循环失效
如下代码实现MSP430G2553单片机两个led交替闪烁 #include msp430.h /** * main.c */ int main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer P1DIR|=BIT0+BIT6; P1OUT|=BIT0; while(1) { unsigned int i; i=50000; while(i--); P1OUT^=BIT0+BIT6; } } 发现灯光显示异常两灯常亮。 为什么呢?在老师帮助下了解了是因为Msp430这款板子默认的低功耗模式导致了cpu不干预而
[单片机]
MSP430<font color='red'>低功耗</font><font color='red'>模式</font>-while循环失效
MCU程序设计之STM8S的optionbytes
今天使用STM8S在程序中修改optionbyte遇到问题一直读取为0,不能进入设置流程,之前的程序今天重新修改东西, 使用新的片子,原来程序如下: AFR_TEMP = (uint16_t)((uint16_t)0x01 8); AFR_TEMP = AFR_TEMP | (uint16_t)0xFE; AFR_TEMP = (AFR_TEMP 8); 之所以直接赋值而不调用函数,是因为程序代码空间有限,使用函数调用方法修改没有问题,如下: AFR_TEMP = FLASH_ReadOptionByte(0X4803); AFR_TEMP = (AFR_TEMP 8);
[单片机]
STM8S_010_I2C读写EEPROM(硬件方式)
Ⅰ、写在前面 相信看过前面那篇文章“ 更加深入理解I2C总线、协议及应用 ”的人对I2C都有一定的了解了。那篇文章是针对I2C,使用单片机IO模拟I2C方式实现读写操作。 本文将讲述硬件I2C读写操作,也就是由处理器自身硬件的I2C实现时钟、数据的传输过程。 为方便大家阅读,本文内容已经整理成PDF文件: http://pan.baidu.com/s/1i5uWhJR 作者:strongerHuang 版权所有,未经允许,禁止用于其它商业用途!!! Ⅱ、STM8硬件I2C知识 STM8S的I2C模块不仅可以接收和发送数据,还可以在接收时将数据从串行转换成并行数据,在发送时将数据从并行转换成串行数据。可以开启或禁止
[单片机]
N76E003 低功耗(掉电模式&定时唤醒)
#include N76E003.h #include Common.h #include Delay.h #include SFR_Macro.h #include Function_define.h #define uint unsigned int #define uchar unsigned char uint WKTCount=0; bit WKTFlag=0; sbit LED=P0^4; sbit TS1=P0^3; void main (void) { Set_All_GPIO_Quasi_Mode; WKCON=0x03;//预分频64 RWK =255-153;/
[单片机]
N76E003 <font color='red'>低功耗</font>(掉电<font color='red'>模式</font>&定时唤醒)

推荐帖子

给小弟推选两本书吧 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 测试/测量
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved