// MCU: STM32F030R8, Cortex-M0
 // Clock: 48MHz
 // Cortex-M0'larda DWT Cycle Counter yok.
 // DWT yerine SysTick timer ile süre ölçüyoruz. Hata ihmal edilebilir.
 
  float pi = 3.141592654f;
  float angle_f = 0.0f;
  float angle_f_norm = 0.0f;
  float sin_f = 0.0f;
  int16_t angle_q15 = 0;
  int32_t angle_q31 = 0;
  int16_t sin_q15 = 0;
  int32_t sin_q31 = 0;
  uint32_t T1 = 0, T2 = 0, T_delta = 0;
  float T_us = 0.0f;
  float angle_q15_in_f = 0.0f;
  float angle_q31_in_f = 0.0f;
  while (1)
  {
      angle_f = pi * (30.0f/180.0f); // 30 dereceden radyana dönüşüm
      angle_f_norm = angle_f * (1.0f / (2.0f * pi)); // Q1.15 ve Q1.31 format için normalizasyon
      T1 = SysTick->VAL;
      arm_float_to_q15(&angle_f_norm, &angle_q15, 1); // float(açı) -> Q1.15(açı)
      T2 = SysTick->VAL;
      T_delta = (T1-T2); // SysTick geriye sayıyıyor.O yüzden T2-T1 değil
      T_us = (float)T_delta * (1.0f/48.0f); // mikro saniye cinsinden işlem süresi
      __NOP(); // Breakpoint için boş saykıl
      T1 = SysTick->VAL;
      arm_float_to_q31(&angle_f_norm, &angle_q31, 1); // float(açı) -> Q1.31(açı)
      T2 = SysTick->VAL;
      T_delta = (T1-T2);
      T_us = (float)T_delta * (1.0f/48.0f);
      __NOP();
      T1 = SysTick->VAL;
      sin_f = arm_sin_f32(angle_f); // float ile çalışan sin() fonksiyonu
      T2 = SysTick->VAL;
      T_delta = (T1-T2);
      T_us = (float)T_delta * (1.0f/48.0f);
      __NOP();
      T1 = SysTick->VAL;
      sin_q15 = arm_sin_q15(angle_q15); // Q1.15 ile çalışan sin() fonksiyonu
      T2 = SysTick->VAL;
      T_delta = (T1-T2);
      T_us = (float)T_delta * (1.0f/48.0f);
      __NOP();
      T1 = SysTick->VAL;
      sin_q31 = arm_sin_q31(angle_q31); // Q1.31 ile çalışan sin() fonksiyonu
      T2 = SysTick->VAL;
      T_delta = (T1-T2);
      T_us = (float)T_delta * (1.0f/48.0f);
      __NOP();
      T1 = SysTick->VAL;
      arm_q15_to_float(&sin_q15, &angle_q15_in_f, 1); // Q1.15 -> float dönüşümü
      T2 = SysTick->VAL;
      T_delta = (T1-T2);
      T_us = (float)T_delta * (1.0f/48.0f);
      __NOP();
      T1 = SysTick->VAL;
      arm_q31_to_float(&sin_q31, &angle_q31_in_f, 1); // Q1.31 -> float dönüşümü
      T2 = SysTick->VAL;
      T_delta = (T1-T2);
      T_us = (float)T_delta * (1.0f/48.0f);
      __NOP();
  }