CoIDE ve STM32VLDISCOVERY ile Blinky

      CoIDE ni kurulumu ve ayarları ile ilgili yapılması gerekenleri bir önceki yazıda elimden geldiğince yazmıştım.

      Bu yazımda ise STM32f100RB işlemcisini barındıran discovery kit ile basit bir uygulama yapacağız.

      CoIDE açtıktan sonra yeni bir proje oluşturunuz. Daha sonra CMSIS BootCMSIS core u Ripository penceresinden ekleyiniz. Aynı pencerede Others sekmesinden de GPIO, RCC, FLASH dosyalarınıda eklemeniz gerekmektedir. Tüm bunları yaptığınızda kod yazmaya hazırız demektir.

      CoIDE nin kendiliğinden oluşturduğu ve Project penceresinden ulaşabileceğimiz main.c dosyasını açarak aşağıdaki kodları yapıştırınız. Kodların açıklaması görüldüğü üzre mevcut.

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_flash.h"
GPIO_InitTypeDef GPIO_InitStructure; //Kalıtım Sağlanıyor
void SetSysClockTo24(void)
{
	int i;
  /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------*/
  /* RCC system reset(for debug purpose) */
	RCC_DeInit();						/* Sistem reset Durumuna getiriliyor */
	RCC_HSEConfig(RCC_HSE_ON);			/* High Speed External OSC Çalıştırılıyor */
	for(i=0;i<0x000FFFF;i++);				/* HSE Stabil Olana Kadar Bekleniyor */
  	FLASH_SetLatency(FLASH_Latency_0);	/* 0 wait state*/
    RCC_HCLKConfig(RCC_SYSCLK_Div1); 	/* HCLK = SYSCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1);		/* PCLK2 = HCLK */
    RCC_PCLK1Config(RCC_HCLK_Div1);		/* PCLK1 = HCLK */
    /* PLLCLK = (8MHz/1) * 3 = 24 MHz */
    RCC_PREDIV1Config(RCC_PREDIV1_Source_HSE,RCC_PREDIV1_Div1); /* PLLDIV1 bölme yok */
    RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_3);			/* PLL_in * 3 */
    RCC_PLLCmd(ENABLE); /*Pll Açık */
    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)  /* PLL Hazır olana kadar bekle */
    {
    }
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);			/*Sistem Clock için PLL seçildi*/
    while (RCC_GetSYSCLKSource() != 0x08) 				/* PLL sistem Clock u olarak çalışıncaya kadar bekle */
    {
    }
}
int main(void)
{
	int i;
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /*APB2 bus hattı üzerindeki GPIOA ya çalıştır*/
		/* Output clock on MCO pin ---------------------------------------------*/
		GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
		GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /*GPIOA.8 i Alternate function çıkış olarak ayarla*/
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*50mhz max*/
		GPIO_Init(GPIOA, &GPIO_InitStructure);
		RCC_MCOConfig(RCC_MCO_PLLCLK_Div2);  /*GPIO.8 i PLL/2 şeklinde clock verecek şeklinde ayarla*/
		//
		// ******************************************************************************
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);/*APB2 bus hattı üzerindeki GPIOC ya çalıştır*/
		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
		GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
		GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_All ;/*GPIOC i tüm pinleri çıkış (PullUp) 50mhz ayarla*/
		GPIO_Init(GPIOC, &GPIO_InitStructure);
    while(1)
    {
    	GPIO_SetBits(GPIOC,GPIO_Pin_8);
    	for (i = 0; i < 0x0000FFFF; ++i) {
    	}
		GPIO_ResetBits(GPIOC,GPIO_Pin_8);
		for (i = 0; i < 0x0000FFFF; ++i) {
		}
    	GPIO_SetBits(GPIOC,GPIO_Pin_9);
    	for (i = 0; i < 0x0000FFFF; ++i) {
    	}
		GPIO_ResetBits(GPIOC,GPIO_Pin_9);
		for (i = 0; i < 0x0000FFFF; ++i) {
		}
    }
}

Kodları yüklediğinizde GPIOC.8 ve GPIOC.9 a bağlı olan ledler yanıp sönecektir.
iyi çalışmalar.

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: