您的位置 首页 动态

前后台体系的低功耗编程思维——STM8渠道

1.前言工作之后接触了“低功耗”,开始搜索各种各样的低功耗MCU。网络是一个非常自由的地方,你总可以看到各种关于哪个MCU功耗更低的论战,在这些论战中我查阅了几乎所有低功耗MCU的特性,例如M

  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开发板,结合低功耗办法所以总结了该文章。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/205504.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部