1. 程式人生 > >為什麼32的嘀嗒定時器在低功耗stop模式喚醒後會比較緩慢

為什麼32的嘀嗒定時器在低功耗stop模式喚醒後會比較緩慢

首先我們看到M4的程式設計手冊,裡面有systick的時鐘來源介紹,可以看到systick的計數源的AHB或者AHB/8。


systick的配置函式如下,可以看到選擇的時鐘源時AHB。

__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */

  SysTick->LOAD  = ticks - 1;                                  /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
  SysTick->CTRL  = <strong>SysTick_CTRL_CLKSOURCE_Msk </strong>|
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
  return (0);                                                  /* Function successful */
}

接著我們來看下AHB這個時鐘部分,AHB在系統的時鐘配置函式下是180M,所以systick的時鐘頻率一般都是180M。


在CPU從stop模式被喚醒之後,由於HSE的外部時鐘被關閉了,用的是HSI,所以就變慢了