KEIL Kod Düzeni İçin Header Kullanmak İstiyorum

Başlatan E-x8, 14 Ocak 2019, 17:40:57

E-x8

Merhaba

CubeMX ile proje oluşturup Keil'den yazmaya çalışıyorum kimi zaman HAL kimi zaman REG kodları ile yazıyorum. Bazı kodlarımı tamamen kullanmak için kullanıyorum ve projedeki kodlarla karışıklık olmasın daha güzel düzenleme açısından headerlar ile dışarıya taşımak istiyorum ancak Keil'de beceremedim. Hata alıyorum. "PİN" değişkeni birden fazla tanımlanmış diyor ama tüm dosyalarda arayınca sadece Source .C olduğunu görüyorum ve kafam karıştı.

C dosyasını projede Application/User kısmına sağ tıklayarak oluşturdum. H dosyasını masaüstünden oluşturup Inc klasörü içerisine attım. Değişkenlerimi ve metotlarımı yazarken görebiliyorum oraya kadar tanımladım ancak build edip obje dosaysını yükleyemiyorum.

Kodlarım aşağıdaki gibidir nerede hata yapıyorum?

Source Dosyası XYZxyz.c
#include "XYZxyz.h"
#include "stm32f1xx_hal.h"
unsigned short pin[3][2] = {{0,0},{0,0},{0,0}}; 
void pin1_m1(){
 if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_5)){
 pin[0][0] = 1;
 }else{
 pin[0][1] = 0;
 }
}


Header Dosyası XYZxyz.h
#ifndef __XYZxyz_H_
#define __XYZxyz_H_
unsigned short channel[3][2];
void read_ch1(void);
#endif

Main dosyası içerisinde kullanmak istiyorum ve main dosyası içinde şu şekilde tanımlama yapıyorum.
#include "XYZxyz.h"


Aldığım Hata
linking...
proje\proje.axf: Error: L6200E: Symbol pin multiply defined (by XYZxyz.o and stm32f1xx_it.o).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.
Finished: 2 information, 0 warning and 1 error messages.
"proje\proje.axf" - 1 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed:  00:00:01

strom

Hocam h dosyasi icerisindeki kullanmak istediginiz degiskenin basina "extern" keywordunu koyun

E-x8