此例子可以测试sleep时候的功耗,测试的时候 要注意sleep退出时间,不能让其反复立马进去,要不然,不好测试。

参考miniC编程助手测试例子,方便自己测试验证

//===========================================//
//                  休眠
//主要介绍了省电模式和掉电模式
//省电模式介绍了用计数器唤醒和IO唤醒,
//  例中介绍了T16唤醒后且num自加超过100后退出休眠,即针对不是IO脚电平变化的唤醒条件的唤醒
//  IO唤醒的唤醒条件可参考掉电模式,其他不变
//掉电模式介绍了IO唤醒
//  例中介绍了IO脚电平变化后唤醒,即针对IO脚电平变化的唤醒条件的唤醒
//===========================================//
#include    "extern.h"byte    CLKMD_BK;//=======省电模式=========
byte    num;
word    reload_T16;BIT     KEY      :   PA.4;
bit     LED     :   PA.3        //定义LED灯的引脚void Save_power(void)
{//======User can add code=====//进入省电模式前动作,如关灯、关计数器等//============================CLKMD_BK = CLKMD;                  //保存休眠前的时钟num = 0;while(1){$ CLKMD ILRC/1,En_IHRC,En_ILRC; //系统时钟选择,是否启用IHRC,是否启用ILRC,(En_IHRC和En_ILRC不写为停用,写为启用)//系统时钟可选择IHRC/4, IHRC/16, IHRC/2, IHRC/8, ILRC/16, EOSC/4, IHRC/32, EOSC/2, IHRC/64, EOSC/1, EOSC/8, ILRC/4, ILRC/1//选择系统时钟为ILRC/1,启用IHLC和IHRC;(注:两个RC振荡器至少有一个开启,否则会出现宕机)CLKMD.En_IHRC = 0;              //关闭高频IHRCnop;//========设置T16定时,详情请参考T16=========$ T16M ILRC,/1,bit8;reload_T16 = 0;stt16 reload_T16;stopexe;                      //进入省电模式,T16计时溢出时唤醒$ CLKMD IHRC/64,EN_IHRC,EN_ILRC;//选择系统时钟为IHRC/64,启用IHLC和IHRC;CLKMD.En_ILRC = 0;                //关闭低频ILRCnop;//=======编写唤醒条件=========//例如num自加超过100后唤醒,该方法针对不是IO脚电平变化的唤醒条件num++;if(num > 100)                  //假如发生唤醒而且满足唤醒条件,就返回正常工作{                                //否则停留在省电模式,继续休眠break;}}CLKMD = CLKMD_BK;                   //恢复休眠前的时钟//======User can add code=====//唤醒后打开需要的动作,比如开灯、定时器等//============================
}
//=======掉电模式=========
void    Power_down(void)
{//======User can add code=====//进入省电模式前动作,如关灯、关计数器等//============================CLKMD_BK = CLKMD;                  //保存休眠前的时钟//PAC.0 = 0;PAPH.0 = 1;             //将PA0设置为输入上拉//PADIER = 0b0001_0001;               //将PA0设置为数字模式//休眠前需要切换低频ILRC用来防止唤醒失败$ CLKMD ILRC/1,En_IHRC,En_ILRC;     //系统时钟选择,是否启用IHRC,是否启用ILRC,(En_IHRC和En_ILRC不写为停用,写为启用)//系统时钟可选择IHRC/4, IHRC/16, IHRC/2, IHRC/8, ILRC/16, EOSC/4, IHRC/32, EOSC/2, IHRC/64, EOSC/1, EOSC/8, ILRC/4, ILRC/1//选择系统时钟为ILRC/1,启用IHLC和IHRC;(注:两个RC振荡器至少有一个开启,否则会出现宕机)CLKMD.En_IHRC = 0;                  //关闭高频nop;while(1){stopsys;                     //进入断电模式//=======编写唤醒条件=========//例如PA0由高变低唤醒,该方法针对IO脚电平变化的唤醒条件if(!PA.0)                     //假如发生唤醒而且检查OK,就返回正常工作{                              //否则停留在断电模式break;}}$ CLKMD IHRC/64,EN_IHRC,EN_ILRC; //选择系统时钟为IHRC/64,启用IHLC和IHRC;nop;CLKMD = CLKMD_BK;                   //恢复休眠前的时钟//======User can add code=====//唤醒后打开需要的动作,比如开灯、定时器等//============================
}void   IO_Init(void)
{//----------------------------PA       =  0b0001_1000;PAC     =  0b0000_1000;    //1:输出   0:输入PAPH   =  0b0001_1001;    //1:加上拉 0:不加上拉PB        =  0b0000_0000;PBC     =  0b0000_0000;PBPH    =  0b0000_0000;PADIER  =  0b0001_0001;    //将PA4 PA0设置为数字模式PBDIER =  0b0000_0000;    //1: 设置为数字模式  //单个IO设置//$ PA.0 out,high;    //PA0输出高//$ PA.3 out,low;       //PA3输出低
}
void    FPPA0 (void)
{.ADJUST_IC SYSCLK=IHRC/16, IHRC=16MHz, VDD=5V;.delay 40000;IO_Init();$ KEY in,pull;     //PA4输入上拉$ LED out,high;                //初始把灯点亮(高电平点灯)while (1){//Save_power();                  //省电模式休眠if(!KEY)  //KEY PA3 拉低进入Sleep模式,PA0拉低退出睡眠模式,方便测试Sleep功耗{.delay 10000;   //.delay 1000000;  1000ms = 1sif(!KEY) {Power_down();                    //掉电模式休眠//Save_power();                 //省电模式休眠//$ LED toggle;}}}
}void   Interrupt (void)
{pushaf;if (Intrq.T16){ //  T16 Trig//  User can add codeIntrq.T16  =  0;//...}popaf;
}

最小系统板子 测试电流,可惜我自己的万用表精度太差,无法体现出来ua级别 就不上图了

应广单片机 PMS150G 161 171 基础例子【sleep】相关推荐

  1. 应广单片机 PMS150G、FPC161 基础例子【GPIO设置】

    应广单片机 PMS150G.FPC161 基础例子[GPIO设置] 调试方式:仿真器5S-I-S02B 编译软件:FPPA IDE 编译语言:mini C 电脑系统:win10 软件功能:设置GPIO ...

  2. 手机c语言mini,一、应广单片机的Mini-C语言基础

    一.概述 项目需要性价比高一点的芯片,在澄海这边,台湾的芯片占了很大的市场.台湾芯片的特点是便宜,没办法,玩具出口生产量太大,1分钱的差价都有可能累积出大价钱.选型时选了应广单片机.对于用惯了C开发的 ...

  3. 应广单片机 PMS150G,PWM例程

    前言 基于PMS150G操控PWM调节占空比做到呼吸灯,调节灯光亮度的作用 直接看代码吧,都有注释 代码1 呼吸灯 #include "extern.h"void TM2_Init ...

  4. 二、应广单片机点亮一个灯

    上一节介绍基础,由于时间仓促,写得十分模糊.这一节开始从一个个实际例子,向大家展示应广单片机的各项功能.由于看本文的读者层次不相同,这里全部按照初学者视之. 废话少说,上例程: //========= ...

  5. 应广单片机PMS152

    今天我们来讲讲应广单片机PMS152.PMS152系列是一款IO类型,完全静态以OTP为程序基础的CMOS  8bit 微处理器.它运用RISC的架构并且所有的指令架构的执行周期都是一个指令周期,只有 ...

  6. 应广单片机红外发射例程

    应广单片机红外发射例程,采用PMS150G,其他的MCU型号直接修改就好 //--------------PMS150G---------- // _@ // |1vdd gnd8| // |2pa7 ...

  7. 应广单片机开发案例应广单片机11bitPWM配置

    应广单片机有两种硬件pwm,一种是8bit,另外一种是11bit,8bit的配置稍微简单一些.现在以pms133/psm134为例子,贴一个11bit pwm配置的例子.修改一下可以应用于应广其他系列 ...

  8. 应广单片机PMC150/PMS150

    前面我们讲了应广单片机PMS152,那么我们今天来讲一下应广单片机另外一个型号PMC150/PMS150. PMC150/PMS150是一个IO类型.完全静态,以OTP为程序存储基础的单片机.它运用R ...

  9. 应广单片机11bitPWM配置

    应广单片机有两种硬件pwm,一种是8bit,另外一种是11bit,8bit的配置稍微简单一些.现在以pms133/psm134为例子,贴一个11bit pwm配置的例子.修改一下可以应用于应广其他系列 ...

最新文章

  1. c语言作业雇人写,C语言作业的链表数据的读写
  2. yum安装时报错,提示/var/run/yum.pid 已被锁定,解决办法
  3. unity3d常用组件及分析
  4. SoundHound Inc. Programming Contest 2018[C. Ordinary Beauty]
  5. Ext JS 4.1 RC1发布
  6. python bind sock_python 在bind端口之后创建的socket如果不关闭的话会被回收吗?
  7. Java的一些学习心得
  8. 我不是在吓你,但是区块链,可能真的是普通人弯道超车的最后一个机会了。
  9. 同样做前端,为何差距越来越大?
  10. Android——DDMS简单介绍
  11. mysqldump备份还原
  12. 心得7--JDBC回顾-批处理案例解说
  13. Windows live Writer的安装配置
  14. 从空间、时间和时空动力学角度研究大脑的动态特性
  15. mysql获取上月26号_根据当前时间查询上月26号的日期 本月月25号的日期
  16. Ubuntu安装搜狗fcitx无法正常安装的问题
  17. 一分钟详解线结构光扫描系统
  18. 关于SAP采购信息记录的价格失效后,采购订单不要带出失效价格具体实现
  19. tensorflow.js在nodejs训练猫狗分类模型在浏览器上使用
  20. keil_5软件编程护眼界面设置(护眼绿)

热门文章

  1. 两台地磅改造称重系统需要用什么材料设备
  2. .net core 1.1 mysql_Asp.net Core 1.1 升级后操作mysql出错的解决办法
  3. javaweb医院门诊管理系统
  4. java计算机毕业设计ssm农产品追溯系统设计与实现_e59uz(附源码、数据库)
  5. 工业开关电源电路图 15W电源mw电路图 25W电源
  6. 高斯软件计算测试价格,曙光TC4600百万亿次超级计算系统新系统测试-高斯Gaussian16.PDF...
  7. 看懂 Serverless SSR,这一篇就够了!
  8. 分析以太网帧结构_车辆网络 | 汽车网络中融合以太网的有效解决方案RELYTSNREC...
  9. Android点击这个关闭那个,Android关闭指定的Activity或多个Activity
  10. php日期和时间函数,使用PHP中的日期和时间函数