STM32F4 Girişleri Döngü ile okumak

Başlatan kimlenbu, 10 Haziran 2014, 15:51:47

kimlenbu

Selamlar,

Keil'de STM32F4'ün pinlerini bir döngü içinde okuyabilir miyim ? Atıyorum A portnun ilk 12 pinini okumak istiyorum, Misal :

for(x=0;x<12;x++)
{
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_x))
{
 //işlemler
	}
}


burada GPIO_Pin_x'in GPIO_Pin_1,2,3... diye gitmesini nasıl sağlarım ?

stm32f4xx_gpio.h dosyasında GPIO_Pin_x ifadelerine karşılık gelen sayılar aşağıdaki gibi ama neye göre artıyor anlamadım.

ikiye katlaya katlaya gidiyormuş, aklımda bir şeyler canlandı, gene de önerilere açığım.

#define GPIO_Pin_0                 ((uint16_t)0x0001)  /* Pin 0 selected */
#define GPIO_Pin_1                 ((uint16_t)0x0002)  /* Pin 1 selected */
#define GPIO_Pin_2                 ((uint16_t)0x0004)  /* Pin 2 selected */
#define GPIO_Pin_3                 ((uint16_t)0x0008)  /* Pin 3 selected */
#define GPIO_Pin_4                 ((uint16_t)0x0010)  /* Pin 4 selected */
#define GPIO_Pin_5                 ((uint16_t)0x0020)  /* Pin 5 selected */
#define GPIO_Pin_6                 ((uint16_t)0x0040)  /* Pin 6 selected */
#define GPIO_Pin_7                 ((uint16_t)0x0080)  /* Pin 7 selected */
#define GPIO_Pin_8                 ((uint16_t)0x0100)  /* Pin 8 selected */
#define GPIO_Pin_9                 ((uint16_t)0x0200)  /* Pin 9 selected */
#define GPIO_Pin_10                ((uint16_t)0x0400)  /* Pin 10 selected */
#define GPIO_Pin_11                ((uint16_t)0x0800)  /* Pin 11 selected */
#define GPIO_Pin_12                ((uint16_t)0x1000)  /* Pin 12 selected */
#define GPIO_Pin_13                ((uint16_t)0x2000)  /* Pin 13 selected */
#define GPIO_Pin_14                ((uint16_t)0x4000)  /* Pin 14 selected */
#define GPIO_Pin_15                ((uint16_t)0x8000)  /* Pin 15 selected */


adresleri array'e atıp kullandım :) mesai bitimi duruyor kafa...

X-Fi

for(x=0;x<12;x++)
{
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0<<x))
    {
 //işlemler
    }
}


Bit kaydırma yapıyoruz.

Yukarıdaki gibi yazarsa pin 0 dan pin 12 ye kadar okursun.

Her döngüde sıradaki pini okur.
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)