Systick Timer (SYSTICK)

Beberapa LPC memiliki fitur Systick Timer. Fitur ini melakukan perhitungan dari 24-bit register menghitung mundur sampai 0. Intinya adalah ini digunakan untuk menjalankan timer interrupt. Maksimum timer yg dapat dihitung adalah 1/4 dari clock microcontroller.
Misal 100Mhz, berarti maksimum Systick yaitu 25MHz.

Program untuk setting systick sangat mudah. ini contoh programnya:
#include "LPC17xx.h"

uint32_t msTicks = 0; /* Variable to store millisecond ticks */


void SysTick_Handler(void
     //didalam sini bisa diisi code kita yg akan dieksekusi berdasarkan settingan SysTick_Config()
}

int main (void
{

  uint32_t returnCode;

  
  returnCode = SysTick_Config(SystemCoreClock / 1000); /* Configure SysTick to generate an interrupt every millisecond */

 if (returnCode != 0) 
  { /* Check return code for errors */

    // Error Handling

   }

while(1);

}

Penjelasan SysTick_Config(ticks) :
Parameter: ticks: banyak nya denyut per detik
misal saya ingin SysTick_Handler bekerja setiap 1 ms = 0.001 S:
x = 1 / 0.001 = 1000
Sehingga:
SysTick_Config(SystemCoreClock / x)
jadi:
SysTick_Config(SystemCoreClock / 1000)


misal saya ingin SysTick_Handler bekerja setiap 0.1 ms = 0.0001 S:
x = 1 / 0.0001 = 10.000 
SysTick_Config(SystemCoreClock / x)
jadi:
SysTick_Config(SystemCoreClock / 10000)



berikut fungsinya:
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
  {
    return (1UL);                                                   /* Reload value impossible */
  }

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


 





Komentar

Postingan populer dari blog ini

Cara Menambahkan Pack Installer ke Keil uVision, Menambahkan Board / Device

Mencoba STM32-L476RG Nucleo Board dengan Keil uVision 5

System Requirments untuk Instal Keil uVision v5