/**
********************************** 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 FLASH与EEPROM读写操作
下一篇:STM8S103K3 I2C
推荐阅读
史海拾趣
Ferroperm公司成立于XXXX年,由一群热衷于电磁材料研究的科学家和工程师共同创立。创立之初,公司便致力于电磁材料和相关产品的研发和生产。通过对市场需求的精准把握和对技术创新的持续投入,Ferroperm很快在电磁材料领域取得了初步的成功,并积累了一定的客户基础。
随着产品的多样化发展,Ferroperm公司开始积极拓展市场,寻求更广阔的发展空间。他们不仅加强了与国内外客户的联系和合作,还积极参与国际展览和交流活动,提高了公司的知名度和影响力。同时,Ferroperm还与国际知名企业和研究机构建立了合作关系,共同开展技术研发和市场推广,进一步提升了公司的竞争力。
Astec America, Inc的创立可以追溯到上世纪80年代,当时创始人看到了电源技术的巨大潜力,并决定在这一领域进行深耕。公司初创时期,团队主要专注于电源技术的研发,推出了一系列具有创新性的电源产品。这些产品不仅性能稳定、效率高,而且价格合理,很快就在市场上获得了良好的口碑。
Astec America, Inc的创立可以追溯到上世纪80年代,当时创始人看到了电源技术的巨大潜力,并决定在这一领域进行深耕。公司初创时期,团队主要专注于电源技术的研发,推出了一系列具有创新性的电源产品。这些产品不仅性能稳定、效率高,而且价格合理,很快就在市场上获得了良好的口碑。
随着全球环保意识的不断提高,Astec也开始关注绿色环保和可持续发展问题。公司积极采用环保材料和节能技术,推出了一系列绿色电源产品。同时,Astec还加大了对环保技术的研发力度,努力在保持产品性能的同时,降低生产过程中的能耗和排放。这些举措不仅有助于公司应对环保法规的挑战,还提升了公司的社会形象。
Clever Little Box深知,优质的客户服务是企业长期发展的关键。因此,公司始终注重提升服务质量,为客户提供专业的技术支持和售后服务。同时,公司还注重与客户建立良好的关系,通过定期沟通、反馈收集等方式,了解客户的需求和意见,以便更好地满足客户的期望。
请教,2个单片机是否能安全的访问同一个FM24C02! 2个单片机分别处理各自的事务,需要交换10字节左右数据建立联系 设想通过同一个FM24C02来实现,是否可能,电路要尽可能简单!谢谢!… 查看全部问答∨ |
在设计电路,特别是模拟采集和输出的时候,或者是电源设计,在评估性能前,至少有两点意识: 1.系统定义 包括模拟采集中的精度要求,环境温度要求等。电源中的电流输出能力和散热评估。 2.最大能力和保 ...… 查看全部问答∨ |
在nand flash中是怎么进行坏块(bad block )管理的呢?我看的代码注释说最后的127 blocks放的是relocation tables,而代码上看到的却是最后放的bbt.这两个有什么关系呢?请大家帮忙!!… 查看全部问答∨ |
|
串口写和读函数都是从缓冲区中读取数据。在中断模式下以中断的方式实现接收和发送缓冲区与UXDBUF间的数据传送。对于接收数据,此中断可以由接收到的第一个字节触发接收中断,但是对于发送数据,这第一个中断应该由什么触发呢?应该是发送完一个字节 ...… 查看全部问答∨ |
|
团购了ADS8332的网友,肯定已经知道其性能的优越了。把它用在什么地方会能发挥它的优势呢? 1、做个电压表? 精度还是可以, -- 速度埋没 ...… 查看全部问答∨ |
|
应用描述 为了符合新出台的法规要求,提高燃油经济性和减少排放,汽车必须更加环保。只有通过改进传统内燃机效率,才能满足这些要求,这一目标要通过改进燃烧传感和控制性能付诸实现,因而需要更高的传感器和信号调理精度和集成度。车辆中通常有超 ...… 查看全部问答∨ |
程序员干到30岁,好不容易从码奴混到了白领,却再也干不动了,还时时面临失业的危险。30岁,是一个程序员伤不起的年龄。明天,何去何从?tech2ipo专门为为此现状做出了分析。 一、30岁现象 在官场上,曾经有一个59岁现象,就是官员们会在59岁时, ...… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- 有奖直播|安森美半导体针对物联网的先进图像传感器解决方案
- 降碳行动:寻找身边8位单片机,抢楼赢ST最新M0开发板!
- 团结起来,问倒TI专家团!!!
- 6小时狂欢,谁是2016年TI杯全国大学生物联网设计竞赛最高人气王,你说了算!
- 深入东芝参考设计库:夯实您的设计库,让您的设计更出彩
- 温故而知新——开关电源经典课程学习
- TE Connectivity的智能建筑解决方案——传感和连接,智能楼宇设计的关键
- 畅游安富利人工智能云会展,挑战60天打卡学习养成记!冲击华为Mate40 Pro、Apple iPad Air等豪礼啦!
- 泰克完整LED驱动测试方案 领跑节能亮化新时代
- 直播|基于英特尔® Agilex™ FPGA F-Tile的以太网硬核IP详解及如何使用oneAPI对FPGA编程