System Tick’iniz Hazır.

Basit bir zamanlayıcı olan system tick, STM32f100Rb yi programlayarak basit bir zamanlayıcı yapacağız. Cortex M3 ve Cortex M4 lerde bulunan bu sayıcı ile basit zamanlayıcı yapabiliriz.
Tabiki bu işlemi kütüphane kullanarak yapacağız. CoIde Kullanarak yapacağız. İlk Etapta Repository penceresinin
Peripheral sekmesinden CMSIS Core ve CMSIS Boot seçmelerini,
Others Sekmesinden RCC, GPIO, FLASH seçmelerini
Seçerek ilgili dosyaların projemize eklenmesini sağlamamız gerekir. Bu işlemleri eksiksiz yaparsanız projede bir problem olmaz.

#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_flash.h"
GPIO_InitTypeDef GPIO_InitStructure;
void SetSysClockTo24(void)
{
	int i;
	RCC_DeInit();
	RCC_HSEConfig(RCC_HSE_ON);
  for(i=0;i<0x000FFFF;i++);
  	FLASH_SetLatency(FLASH_Latency_0);
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    RCC_PCLK2Config(RCC_HCLK_Div1);
    RCC_PCLK1Config(RCC_HCLK_Div1);
    RCC_PREDIV1Config(RCC_PREDIV1_Source_HSE,RCC_PREDIV1_Div1);
    RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_3);
    RCC_PLLCmd(ENABLE);
    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET
    {
    }
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
    while (RCC_GetSYSCLKSource() != 0x08)
    {
    }
}
void SysTick_Handler(void){
	int a;
  a=GPIO_ReadOutputData(GPIOC);
 if (a==0x000000200) {
	 GPIO_ResetBits(GPIOC,GPIO_Pin_9);
}
 else {
	 GPIO_SetBits(GPIOC,GPIO_Pin_9);
}
 //SysTick_Config(SysTick_LOAD_RELOAD);
}
int main(void)
{
	SetSysClockTo24();
	  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
	  GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_All ;
	  GPIO_Init(GPIOC, &GPIO_InitStructure);
	  SysTick_Config(12000000);
    while(1)
    {
    }
}

Zamanlama hesabı komutu ile yapılıyor. Systick_config(Sistem Zamanı/Bölme)

 SysTick_Config(24000000/1000); //

Yukardaki kod ile 1ms lik kesme sağlanır.
 
 

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogcu bunu beğendi: