1. 程式人生 > >STM32使用systick實現精確延時

STM32使用systick實現精確延時

SYSTICK暫存器初始化
void SysTick_Configuration(void)
{
 
  if (SysTick_Config(SystemCoreClock / 100))       
  {
   
    while (1);
  }
 
  NVIC_SetPriority(SysTick_IRQn, 0x0);               
}
SysTick_Config預設時鐘為SysTick_CLKSource_HCLK,所以在這之前使用SysTick_CLKSourceConfig()選擇系統時鐘不會改變systick的時鐘
static __INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);           
                                                              
  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;     
  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); 
  SysTick->VAL   = 0;                                         
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |

                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                   
  return (0);