stm32f407 discovery keil buton ile led yakma örneği

Başlatan ido2323, 21 Eylül 2016, 14:45:02

ido2323

butona basınca led yanar, tekrar basınca led söner. Option of Target kısmında C/C++ kısmında Define kısmına ekle: USE_STDPERIPH_DRIVER, STM32F4XX, HSE_VALUE=8000000

#include "stm32f4xx_rcc.h"              // Keil::Device:StdPeriph Drivers:RCC
#include "stm32f4xx.h"                  // Device header
#include "stm32f4xx_gpio.h"             // Keil::Device:StdPeriph Drivers:GPIO

void Delay(uint32_t time)
{
    while(time)
			time--;
}

int main() 
{
	
GPIO_InitTypeDef GPIO_InitDef;
	
	uint8_t button_input, buff=0;
	
	  // output yapilancak pinler için reset ve clock bilgisini ayarlama
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
 
	  //output girisleri için pin ayarlamalri
    GPIO_InitDef.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_12 | GPIO_Pin_15;
    GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
    GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
    //Pinleri aktif etme
    GPIO_Init(GPIOD, &GPIO_InitDef);
	
 // input yapilancak pinler için reset ve clock bilgisini ayarlama
	  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
 
	   //input girisleri için pin ayarlamalri
    GPIO_InitDef.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitDef.GPIO_Mode = GPIO_Mode_IN;
    GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
    GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_DOWN;
    GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
    //Pinleri aktif etme
    GPIO_Init(GPIOA, &GPIO_InitDef);
		
		
 
 while(1)
	 {
		 
	 button_input = GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_0); // bunu GPIO kütüphanesinden aldik hazir kalip
   while(GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_0));
		 
		 Delay(1252451);
		 
		 buff = buff + button_input;
		 
    if(buff % 2) // bölümden kalan tek mi çift mi seklinde bakar
		{
		
		GPIO_SetBits(GPIOD, GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_12 | GPIO_Pin_15 );}
    else
		{
		GPIO_ResetBits(GPIOD, GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_12 | GPIO_Pin_15);}
		
	}
}

ydadelen

Merhaba, sanırım STM32 programa ile uğraşıyorsunuz. Size bir soru sormak istiyordum. Acaba STM32F4 veya başka bir STM32 Mcu'yu kütüphane kullanmadan register seviyesinde programlama yapmak için önerebileceğiniz bir kaynak var mı? St'nin sitesinde kaynak bulmak samanlıkta iğne aramaktan daha zor. Teşekkürler.


piscopatos2

registerlar ile çalışmak için gerekli herşey keil (derleyici) içerisinde var zaten, öncelikle HAL veya std lib kütüphaneleri ile yapacağınız projeyi yapıp çalıştığını görün, daha sonra kullanılan fonksiyonlara sağ tıklayıp "go to definition" sekmesine tıkladığınızda, o fonksiyonun yazılı olduğu c dosyası açılacaktır. bu fonksiyonları çalışarak register kullanımını çok rahat öğrenebilirsiniz.