1.前言
工作之后接触了“低功耗”,开始搜索各种各样的低功耗MCU。网络是一个非常自由的地方,你总可以看到各种关于哪个MCU功耗更低的论战,在这些论战中我查阅了几乎所有低功耗MCU的特性,例如MSP430、EFM32还有STM32L等,网络论战的核心便是哪款MCU的休眠电流更低。看多了资料我便发现,这些低功耗的MCU如何使用,低功耗MCU的程序编写和普通MCU编程有什么区别。
带着这些疑问我继续品味关于低功耗MCU的”论战“,直到我购买了《MSP430系列单片机系统工程设计与实践》。在该书中提到了低功耗MCU编程的基本思想,大致可以总结为:
1.善用节拍
2.消除阻塞
下面就结合STM8谈谈如何实践以上两点。(虽然STM8并不是严格意义上的低功耗MCU,但是只要有低功耗指令的MCU都可以使用以上两点,发挥它的低功耗特性)
2.善用节拍
定时休眠是低功耗MCU常用的手段,定时休眠便是让MCU先休眠再工作,在休眠和工作之间不停转换。STM8有多种低功耗方式,例如等待模式便是其中的一种,等待模式时仅MCU停止工作,其他外设可正常工作。使用等待模式可以保证定时器或UART等可以正常的进入中断。当然也可以使用停止模式进一步降低功耗,在这里则使用等待模式做一个“方法性质”的说明。
图1 前后台系统中的低功耗节拍
可以这样理解,定时进入低功耗模式也可以理解为一个任务,这个“任务”会阻塞CPU使得其他任务无法得到运行,但这并不是真正意义的阻塞CPU,而是使得CPU停止只能通过定时器中断才可以退出该”任务“。实现部分的代码如下:
void main(void)
{
/* Clock configuration -----------------------------------------*/
CLK_Config();
/* GPIO configuration -----------------------------------------*/
GPIO_Config();
/* TIM4 configuration -----------------------------------------*/
TIM4_Config();
while (1)
{
// 进入等待模式,CPU停止工作,所有中断打开
Enter_WaitMode();
// LED闪烁任务
LED_Process();
}
}
void Enter_WaitMode(void)
{
WaitFlag = 0;
// 1ms之后CPU被TIM4中断唤醒,WaitFlag在中断中被置位
while( WaitFlag == 0)
{
__wait_for_interrupt();
}
}
INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23)
{
WaitFlag = 1;
/* Cleat Interrupt Pending bit */
TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
}
以上代码中出现了WaitFlag标志位,该标志位出现在Enter_WaitMode函数和TIM4_UPD_OVF_IRQHandler中断中,该标志位的作用是保证唤醒CPU继续工作的一定是定时器4溢出中断,其他中断例如UART接收中断则不能使CPU重新运行。STM8的等待模式和定时器4溢出中断组成了低功耗节拍”任务“。
3.消除阻塞
从上文的分析可以看出,在整个的运行周期中总是希望低功耗任务所占的比重大(从时间角度切入),其他任务所占的比重小。那么其他任务应该尽量减少对CPU的占用,例如实现LED间隔闪烁便可使用以下代码:
void LED_Process(void)
{
static uint16_t LEDCounter = 0;
if( LEDCounter++ > 500 )
{
LEDCounter = 0;
/* Toggles LEDs */
GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);
}
}
由于LED_Process在低功耗任务之后运行,而低功耗任务所占用CPU的时间为固定时间——定时器4溢出周期,也就意味着LED任务的调用周期为1ms,利用该特性可以结合一个计数变量LEDCounter实现LED闪烁功能,当然更复杂的时序可以通过有限状态机实现。
4.总结
节拍运行和消除阻塞算是低功耗MCU编程的基本思想,理解了低功耗MCU编程的基本思路那么不是低功耗的MCU也可以用来开发出低功耗应用。前段时间上TB查看MCU的价格,STM8的价格真的把我吓了一跳,自己也购置了STM8开发板,结合低功耗方法于是总结了该文章。
关键字:前后台系统 低功耗 编程思想 STM8平台
引用地址:
前后台系统的低功耗编程思想——STM8平台
推荐阅读最新更新时间:2024-03-16 15:34
PIC10F20X系列单片机的四例应用
由Microclaip Technology Inc出品的单片机:PIC10F200/202/204/206,因采用了SOT-23-6封装,被称着为世界上最小单片机。其仅有33条单字指令,除了程序跳转指令为双周期指令外,其余均为单周期指令(12位宽);含2级硬件堆栈、数据和指令(直接、间接和相对寻址模式)、8位宽数据总线、8个特殊功能硬件寄存器:工作速度为4 MHz内部时钟1μs指令周期的RISC架构单片机,完成需要微型化、极小电路 板空间、高性价比、低电源电压供电的低功耗环境嵌入式系统开发。 在以下LED的变闪灯驱动、医用输液监视、配合555用于电热剪调控、高亮LED亮度调光的4例应用中,通过其集成开发环境MPLAB ID
[单片机]
用电池驱动的低功耗基准电压发生电路
用电池驱动的低功耗基准电压发生电路 电路的功能 以电池作动力的电子电路必须采用低功耗型。对于放大电路来说,只要采用低功耗OP放大器即可。但要实现基准电压源的低功耗却很麻烦。普通齐纳二极管若减少偏流,性能就会恶化,所以应有数MA的工作电流。 本电路是低功耗基准电压电路,采用了可用30UA置偏的低功耗基准电压用IC(LM385)。 电路工作原理 电路构成并无特别之处,与“温度补偿式齐纳二极管+10V基准电压发生电路”的电路相同,但选用了低功耗OP放大器,而且置信电阻采用了高阻值,尽量降低消耗电流。 如果基准电压二极管的偏流IS为30UA,R1=(VO-VZ)/IZ=83K,R2则由流过电阻分压电路的电流IS
[电源管理]
Altera 28nm Cyclone® V FPGA实现高性能低成本低功耗
Cyclone V FPGA简介
Altera公司的28nm Cyclone? V FPGA器件是目前市场上功耗最低、成本最低的28nm FPGA。该系列通过集成,前所未有的同时实现了高性能、低系统成本和低功耗,非常适合工业、无线、固网、军事和汽车等市场应用。Cyclone V系列完成了Altera的28nm定制系列产品的全系列发售,提供多种器件以满足用户的各类设计需求——从最大带宽到最低功耗。
Cyclone V系列采用了TSMC的28nm低功耗(28LP)工艺进行开发,满足了目前大批量低成本应用对最低功耗、最低成本,以及最优性能水平的需求。
与前几代产品相比,该系列总功耗降低了40%,静态功耗降低了30%。
[嵌入式]
基于蓝牙4.0的教室人数监测智能系统设计
引言 智能人数统计、环境监测等系统,一直以来备受无线通信及电子行业的高度关注,并被广泛应用于机场、车站、剧院等人流量较大且空间有限的环境资源中。教室作为现在大学生最为熟悉的学习场所,其环境的优劣直接关系到学生的学习效率。教室人数统计系统作为出勤率统计的辅助系统,一方面,服务于教师,使教师能将精力集中于教学活动而非出勤率考量活动(点名或签到);另一方面,便于学校教师管理部门实时获得教室利用率等信息的传递与反馈,从而合理安排教室资源,同时也有助于同学快速了解教室使用情况。 蓝牙无线技术是使用范围广泛的全球短距离无线标准之一,蓝牙技术联盟(SIG)于2010年7月发布了蓝牙4.0版本核心规范,自此蓝牙迈入了4.0时代。蓝牙4.0规范的核
[单片机]
瑞萨和Dibotics推出基于R-Car SoC的实时、低功耗LiDAR解决方案
开放的LiDAR解决方案将扩展Renesas autonomy™ Platform,其演示方案将亮相2018CES展Dibotics展台(中央广场北厅,CP-5, 法国汽车馆) 2017年12月18日,日本东京、法国巴黎 - 全球领先的先进半导体解决方案供应商瑞萨电子株式会社(TSE:6723)与实时3D激光雷达处理领域的先驱和领导者Dibotics日前宣布,双方共同合作开发了面向高级驾驶员辅助系统(ADAS)和自动驾驶应用的汽车级嵌入式解决方案,用于光探测和测距(LiDAR)处理。该合作使系统制造商以低功耗和高级功能安全(FuSa)实现实时3D测绘系统。 目前,激光雷达处理需要高效的处理平台和先进的嵌入式软件。通过将瑞
[半导体设计/制造]
低功耗模式下微控制器时钟配置应用
在微控制器的低功耗应用中,对时钟的设置是很重要的一个方面。不同类型的微控制器在低功耗模式下对时钟的配置也各有不同。飞思卡尔公司推出的增强型8位微控制器HCS08系列具有很强的低功耗性能。其中,HCS08系列里的MC9S08QG8在同类产品的基础上对低功耗应用下的时钟又有了进一步的改进。 1 MC9S08QG8及其内部时钟模块介绍 微控制器MC9S08QG8是飞思卡尔公司新推出的一款8位增强型微控制器。它是小封装、低功耗的产品,但这并不意味着它是“低端”的产品;相反,它是一个高度集成的、功能丰富的、适用于各种应用的低价位单片机。MC9S08QG8采用高性能、低功耗的HCS08内核,具有很高的集成度,还包括更长的电池寿命(即使工作电
[应用]
吉时利万用表的低功耗测试方案
随着物联网推广的深入,万物互联必将成为未来的发展方向。诸如NB-IOT、LORA、BLE等低功耗物联网解决方案会越来越多的应用在产品设计上。而低功耗的测试方案将会越来越多的被应用在研发设计,生产测试上。TSP-4000低功耗测试方案测量电流精度高,是目前市面上不多的且性价比高的高精度待机电流测试方案。可以分析终端设备的电流输出曲线,为工程师提供了一个更深入了解系统硬件构架,软件构架对待机电流影响的工具。通过这套方案,可以帮助工程师降低自己的产品功耗,最终达到提高待机时间的目的。 方案特点: 体积小,配置简单,性价比高。 测量精度高,抗干扰能力强,电流测量精度最高可达 100pA,分辨率 1pA。 采样率高,可以实现动态电流的实
[测试测量]
电池供电装置的低功耗设计
从制造过程开始,一直到所有的应用领域,极低功耗技术逐渐成为所有设计中必不可少的需求。对能源敏感的应用,特别是必须以单颗电池提供连续数小时运作时间的产品,更需要加入超低功耗设计概念。要满足这些要求,就必须整合微控制器,这不仅要了解电池特性,还必须深入了解为了达到连续使用10、15甚至20年却无须更换电池的目标,应该如何设计一款装置。 要在极低功耗条件下操作,就必须用全新的方法来看待这些极低功耗应用。传统上,这些复杂应用都以一种较方便的观点来分析其用电量,针对使用范例的应用和电源来提出假设,以便产生“典型”的功耗。 然而,举例来说,要实现可连续操作20年的单电池供电应用,应用必须汲取比该电池自放电率更低的功率,这使得每n
[电源管理]