stm8l151低功耗程序架构,调试心得

2020-03-09来源: eefocus关键字:stm8l151  低功耗  程序架构  调试心得

最近帮医院做了一款体温记录仪,整个硬件方案资源是:stm8L151 + NTC*2 + EEPROM + 锂电池充电保护电路 + 18mAh纽扣电池;软件逻辑是,每隔一分钟,采样两路温度并保存在EEP里;通过USB转TTL,上位机能够读取,展示温度曲线,最大最小平均值等简单的运算;整个方案很简单,但也走了不少弯路......


单片机程序框架之伪代码:


void main(void)

{

    CLK_Config();

    GPIO_Config();

    ADC_Config();

    USART_Config();

    AT24C256_Init();

    RTC_Config();

    PWR_FastWakeUpCmd(ENABLE);  // 快速唤醒使能

    PWR_UltraLowPowerCmd(ENABLE);// 超低功耗

    System_StatusCheck();//系统模式判断

 

    enableInterrupts();

 

    while(1){

                if(采集模式)

                {

                   if(rtc_wake_up)// 如果单片机被RTC唤醒(每60s唤醒)

                    {

                      system_wake_up();    //唤醒后,首先要复原必要的初始化!

                      get_temp();   //采集温度

                      save_temp();   //打包并写入eeprom

                      system_goto_sleep();   // 这个函数对于低功耗非常重要!

 

                      halt();   //进入低功耗

                    }

                }

 

                if(上传数据模式) // USB插入,与上位机通讯;

                 {

                     关闭RTC_wakeup中断,退出低功耗模式;

                     读取数据;

                     打包传输数据;

                 }

            }

}

 


在低功耗调试过程中,使用的内部晶振,电池保护电路功耗在7uA左右(这个怎么降低,目前没有方案,单片机裸机功耗在1.4uA),不用的IO口统一输出拉低,EEPROM带外部上拉电阻的两个IO,在进入睡眠前,拉高! NTC_ADC的模拟通道IO,拉高,唤醒后再配置为模拟输入通道;


对于IO的拉高拉低,根据欧姆定律来算,结合工程的实际电路,单片机的内部上下拉电阻情况,再决定是拉高还是拉低。

关键字:stm8l151  低功耗  程序架构  调试心得 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic490877.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:NRF51822之使用外部32Mhz晶振
下一篇:STM8L+BC26双低功耗,微安

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

stm8l151低功耗程序架构,调试心得
;                     打包传输数据;                 }            }} 在低功耗调试过程中,使用的内部晶振,电池保护电路功耗在7uA左右(这个怎么降低,目前没有方案,单片机裸机功耗在1.4uA),不用的IO口统一输出拉低,EEPROM带外部上拉电阻的两个IO,在进入睡眠前,拉高! NTC_ADC的模拟通道IO,拉高
发表于 2020-04-27
STM8L151 DAC
最近在做一个关于ADC采集的,同时使用DAC输出的项目,对于DAC输出0V电压做一下总结。STM8L151中内嵌1个 Output Buffer其作用可以用来降低输出阻抗,可以在不添加外部运算放大器时直接驱动外部负载,通过 DAC_CHxCR1来控制其使能或失能。我使用的是PB4 具体的配置代码如下:/********************************RI_IOSwitch_13 ---> PB6RI_IOSwitch_14 ---> PB5RI_IOSwitch_15 ---> PB4配置DAC1 通道1 PB4 ********************************/void
发表于 2020-04-21
STM8L151系列 (OTA) Bootloader功能的开启 和 关闭
/PLX_Extends/blob/master/main.c    optbl = ((uint16_t)FLASH_ReadByte(OPT_BL_ADDR_L) << 8) | FLASH_ReadByte(OPT_BL_ADDR_H);    if (optbl != 0x0000)    {        printf("[OPTBL] dis: 0x%Xrn", optbl);        // OPTBL:  Option Byte 可选的字节 
发表于 2020-04-01
STVD下STM8L151使用官方固件库开发
相信很多朋友在STM8的开发中很多是使用官方的固件库来进行开发的,这样开发速度快,并且程序不易出错。前面的博客讲到了如何在STVD中新建一个新的STM8L151的工程,最后新建成功后,出现下面的工程目录:在STM8_interrupt_vector.c 文件中,代码如下:/* BASIC INTERRUPT VECTOR TABLE FOR STM8 devices * Copyright (c) 2007 STMicroelectronics */ typedef void @far (*interrupt_handler_t)(void); struct interrupt_vector
发表于 2020-03-17
STVD下STM8L151使用官方固件库开发
IAR no definition for
最近在学STM8L151,在编程的时候遇到了一些问题和大家分享下。代码终于打完之后,make一下直接报错:Error[Li005]: no definition for "TIM2_ClearITPendingBit" [referenced from C:UsersAdministratorDesktopble_ ir_emitterDebugObjstm8l15x_it.o] 错误如上,函数未定义或声明,然后我找到目标源文件和头文件,TIM2_ClearITPendingBit函数是库文件 stm8l15x_tim2.h 里面的函数,然后我在stm8l15x_it.c中包含
发表于 2020-03-12
美国大学研发低功耗光束控制平台 可制成如信用卡大小的激光雷达
探针,在光遗传学研究中刺激神经元、或者用于系统中每个离子的一种光传递方法,以进行一般的量子操作和读出。”Lipson的团队设计了一个多通道的平台,该平台可以降低光学移相器的功耗,同时保持其运行速度,确保低宽带损耗,从而实现了可扩展的光学系统。研究人员可以让光信号通过相同的移相器进行多次循环,从而降低总功耗。研究人员展示了一个硅光子相控阵,包含512个有源控制移相器和光学天线,在宽广视场上控制2D光束时,只需要消耗极低的能量。相控阵设备最初是在较长电磁波波长下发展起来的,通过在每个天线上应用不同的相位,研究人员可通过在一个方向上设计相长干涉,在另一个方向上设计相消干涉,从而形成一个定向的光束。为了控制或改变光束的方向,研究人员还会延迟
发表于 2020-05-05
美国大学研发低功耗光束控制平台 可制成如信用卡大小的激光雷达
小广播
何立民专栏 单片机及嵌入式宝典

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

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