历史上的今天
今天是:2025年03月09日(星期日)
2020年03月09日 | stm8l151低功耗程序架构,调试心得
2020-03-09 来源:eefocus
最近帮医院做了一款体温记录仪,整个硬件方案资源是: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的拉高拉低,根据欧姆定律来算,结合工程的实际电路,单片机的内部上下拉电阻情况,再决定是拉高还是拉低。
史海拾趣
|
小生请教各位高手一个问题: 就是PT2272的D1,D2,D3,D4,与AT89C2051的P1.0,P1.1,P1.2和P1.3连接(高电平有效),当D1为高电平时,P1.0为什么无动于终?但用D1驱动一个三极管然后再用三极管驱动P1.0就可以. 1.是不是单片机不 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:11 编辑 12月5日下午,“NEC电子杯--2009年全国大学生电子设计竞赛” 颁奖典礼在人民大会堂隆重举行。大赛得到多方广泛支持,原全国政协副主席胡启立同志、教育部高教司刘桔副司长、工业和信息化部党组成员 ...… 查看全部问答> |
|
小弟我有一块64M的mini2440,nor flash里还是supervivi-mini2440,我想试试新版本的wince5,友善之臂的手册里说必须要更新nor flash里的supervivi,于是我用H-Jtag烧了supervivi_64M进去,开发板从nor flash启动后一切正常,向Nand flash里烧写supe ...… 查看全部问答> |
|
求助:WINCE S3C2440 30万像素摄像头显示出现多张相同的画面平铺是为什么? 具体情况:我用的LCD为800*600的屏,开发板为S3C2440,摄像头驱动原先为130万像素,现在我想弄成30万像素,改可驱动,结果显示在LCD上的画面是多张相同的画面平铺,就是类似于电脑桌面,原先拉伸的图片变为平铺??请问这是怎么回事??我在注册表中已经把分辨 ...… 查看全部问答> |
|
在PDA上使用Platform Builder自定义的一个操作系统,CE5.0的。装上CE Star 2.5后,能够使用拼音输入法输入汉字,但是不能手写输入。屏幕为触摸屏。请高人指教,不胜感激!… 查看全部问答> |
|
Linux下编写了一个串口程序,可是发现读出来的数据是混乱零碎的!(不是乱码) 我用的是TI的eZ430RF2500的目标板。板上的芯片是MSP430F2274。我将TI赠送的光盘里的例程烧写进板子,在windows下一切顺利正常。这是通过超级终端获取下来的正确的接收信息:$HUB0, 25.7C,3.5,000,N#$HUB0, 26.1C,3.5,000,N#(以下省略)但是当我到L ...… 查看全部问答> |




