stm8l151低功耗程序架构

2019-12-02来源: 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/ic481692.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8S003F3使用总结——串口
下一篇:stm8时钟切换

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

推荐阅读

STM8L读写EEPROM(24LC64)
使用24LC64(24XX64)是低功耗应用的EEPROM,存储容量 8K byte(64K bit),IIC 最大时钟频率400 KHz(24FC64达到1MHz),低功耗CMOS技术:工作电流 1 mA(典型)、 待机电流 1 μ A(典型),32字节的页写缓冲器,超过100万擦/写周期,数据保存>200年。24C02只有8字节的页写缓冲器,操作的地址只有8位,而24LC64操作的地址包含高8位和低8位。两者的数据手册去区别如下:1、AT24C02页写时序:2、24LC64页写时序:STM8L的程序设计如下:(1)数据的页写操作:(2)数据的连续读取:
发表于 2019-12-03
STM8L读写EEPROM(24LC64)
记一次stm8l程序跑飞
项目使用stm8l051f3做主控,CC2500做数据接收,不发送。跑飞的现象就是,刚开始能运行,经过一段未知长度的时间,有可能是3分钟,有可能是30分钟,指示灯不再闪烁,中断按键单片机无反应。接入调试器发现跑到了一个非常大的地址,已经超过了mcu的内部flash空间。可以确定是程序跑飞。经验是:程序跑飞,查条件语句是否都有做处理。程序跑飞,查内存溢出。查了好久,查出是内存溢出导致。因为发送端发送的数据固定是32字节,所以在接收端只开辟了一个32字节的buffer去读取收到的数据
发表于 2019-12-02
STM8L052C6T6液晶LCD驱动过程
; for (counter = 0; counter <= LCD_RAMRegister_13; counter++)    {        LCD->RAM[counter] = 0xff;    }}下面着重记录一下踩过的坑:LCD_Init();函数里面的最后一个参数是LCD_VoltageSource_Internal还是LCD_VoltageSource_External官方STM8L-DISCOVERY的原理图上[object Object]R25这个0R电阻没有焊接,所以代码里使用的是
发表于 2019-12-02
STM8L052C6T6液晶LCD驱动过程
STM8L的LCD接口详解及驱动程序
STM8L部分型号集成了段式液晶驱动器,可以驱动4*28=112个液晶段.段式液晶屏为低功耗显示器件,功耗根据屏的大小和显示段数会有所不同,通常功耗在10ua左右.生活中,数字电子表,数字万用表,数显温度计等,使用的都是段式液晶屏,通常一颗纽扣电池可以保证设备间隔不断显示数字两年或更久.大家比较熟悉的液晶屏1602模块其实也是段式液晶,是一个有很多段的点组成的,由于点比较多,所以1602模块集成了驱动芯片,我们只需给1602送数据,就可以控制1602进行显示了.液晶本身不会发光,1602之所以会发光是因为使用了LED背光板.段式液晶驱动器,通常会含有一个电压泵,一个频率分频器.电压泵用来提供驱动液晶段的电压,电压的高低决定着显示
发表于 2019-11-29
STM8L的LCD接口详解及驱动程序
STM8L的EEPROM读写原理及例程
STM8L103C6拥有1KB的片上EEPROM,可以用来存储程序需要用到的参数,就不需要额外使用24C02这样的外部存储器了.同时,和24C02比起来,STM8L的片上EEPROM操作更简单,可以直接对地址进行操作,进行数据读写.下图是STM8L闪存和EEPROM的地址分配图,可以看到EEPROM的起始地址为0x001000,结束地址为0x0013FF.共1024个地址空间,所以EEPROM的容量为1KB.EEPROM在上电复位后是写保护的,在向其中写入数据时,需要解锁,关闭写保护.解锁流程为:①第一次向FLASH_DUKR写入密钥0xAE②第二次向FLASH_DUKR写入密钥0x56两次都写入正确后,写保护功能被关闭,可以对
发表于 2019-11-25
STM8L的EEPROM读写原理及例程
STM8L052低功耗模式
Stm8L系列单片机的低功耗有五种模式:§ wait模式§ Lowpower run模式§ Lowpower wait模式§ Active-haltwith full RTC模式§ Halt模式最低功耗的就是就是halt模式。这里也主要总结一下如何进入halt模式,进入以后可以通过什么方式唤醒,以及有很多客户会关心的如何自动唤醒。Halt模式进入很简单,执行一条halt指令,调用库函数也就是halt()就行了。但是进入前要注意把所有的中断挂起标志给清除掉。要是不清零又恰巧有中断标志的时候进入该模式也会被立马唤醒。进入这种模式,所有的外设全都关闭了,所有时钟关闭。这时候它自己是醒不过来的,只能靠掐人中(给个外部中断)或者重新复活
发表于 2019-12-05
小广播
何立民专栏 单片机及嵌入式宝典

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

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