Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: M_B - 24 Temmuz 2020, 16:27:41

Başlık: STM32CubeIDE undefined reference to Hatası
Gönderen: M_B - 24 Temmuz 2020, 16:27:41
Merhabalar,
Youtube kanalında KEIL ile yapılan uygulamayı ( STM32F407 + W5500 TCP/IP ) STM32Cube IDE ile denemek için başladım. Kütüphane ekleme işlemlerini hepsini yaptım.

Main icerisine ilgili kütüphaneleri ekledim derleme yaptım. Sorun yok.

Eklediğim kütüphane den iki fonksiyon cağırınca hemen  [  reg_wizchip_cs_cbfunc(cs_sel, cs_desel);    reg_wizchip_spi_cbfunc(spi_rb, spi_wb);  Bu fonksiyonlar wizchip_conf.h tanımlı. ]
undefined reference to `reg_wizchip_cs_cbfunc'
undefined reference to `reg_wizchip_spi_cbfunc'


hatası almaya başladım. Ide de başka bir ayar daha yapmam mı lazım. Neyi gözden kaçırmış olabilirim.

Proje ağacım ve Ayar ekranım.

(https://i.hizliresim.com/GbyUA2.png) (https://hizliresim.com/GbyUA2)

(https://i.hizliresim.com/eXKzfL.png) (https://hizliresim.com/eXKzfL)

main.c iceriğide
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "wizchip_conf.h"
#include "socket.h"
#include "loopback.h"
#include "string.h"




uint8_t rcvBuf[20], bufSize[] = {2, 2, 2, 2};


SPI_HandleTypeDef hspi1;

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);

/*---------------------------------------------------------------------------------------
 * void cs_sel()
 ---------------------------------------------------------------------------------------*/
void cs_sel()
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_RESET); //CS LOW
}
/*---------------------------------------------------------------------------------------
 *  void cs_desel()
 ---------------------------------------------------------------------------------------*/
void cs_desel()
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_10, GPIO_PIN_SET); //CS HIGH
}
/*---------------------------------------------------------------------------------------
 *  uint8_t spi_rb(void)
 ---------------------------------------------------------------------------------------*/
uint8_t spi_rb(void)
{
uint8_t rbuf;
HAL_SPI_Receive(&hspi1, &rbuf, 1, 0xFFFFFFFF);
return rbuf;
}
/*---------------------------------------------------------------------------------------
 *  void spi_wb(uint8_t b)
 ---------------------------------------------------------------------------------------*/
void spi_wb(uint8_t b)
{
HAL_SPI_Transmit(&hspi1, &b, 1, 0xFFFFFFFF);
}
/*---------------------------------------------------------------------------------------
 * int main(void)
 ---------------------------------------------------------------------------------------*/
int main(void)
{



  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_SPI1_Init();


   reg_wizchip_cs_cbfunc(cs_sel, cs_desel);
   reg_wizchip_spi_cbfunc(spi_rb, spi_wb);

//
//   wizchip_init(bufSize, bufSize);
//   wiz_NetInfo netInfo = { .mac = {0x00, 0x08, 0xdc, 0xab, 0xcd, 0xef}, // Mac address
//                              .ip = {192, 168, 2, 192}, // IP address
//                              .sn = {255, 255, 255, 0}, // Subnet mask
//                              .gw = {192, 168, 2, 1}}; // Gateway address
//
//   wizchip_setnetinfo(&netInfo);
//   wizchip_getnetinfo(&netInfo);


  while (1)
  {


  }

}// main end.
/*-------------------------------------------------------------------------------------*/



Başlık: Ynt: STM32CubeIDE undefined reference to Hatası
Gönderen: Tagli - 24 Temmuz 2020, 17:10:10
Buradakine (https://www.picproje.org/index.php/topic,76981.0.html) benzer bir durum olabilir mi acaba? TrueStudio ve STM32CubeIDE'nin bu konudaki çalışma mantıkları aynı.
Başlık: Ynt: STM32CubeIDE undefined reference to Hatası
Gönderen: M_B - 24 Temmuz 2020, 18:04:10
Alıntı yapılan: Tagli - 24 Temmuz 2020, 17:10:10Buradakine (https://www.picproje.org/index.php/topic,76981.0.html) benzer bir durum olabilir mi acaba? TrueStudio ve STM32CubeIDE'nin bu konudaki çalışma mantıkları aynı.
Hocam maalesef oyle bir secenek bulamadım. Forma yazmadan once de bu secenegi gormustum.
Versiyonum: Version: 1.3.0
Başlık: Ynt: STM32CubeIDE undefined reference to Hatası
Gönderen: M_B - 24 Temmuz 2020, 18:38:33
(https://i.hizliresim.com/5VkkNg.png) (https://hizliresim.com/5VkkNg)
İşaretli yeri Static Library Yapınca derleme hatası gitti. Cozum bu degil. Cozum aşağıda..


Gerçek Çozum ise
Bahsettiğiniz seçeneğin çıkması için projenin üzerine değil, ilgili klasörün (mesela W5500 klasörü) üzerine sağ tıklayıp properties'e gitmek ve ordan
"Exclude resource from build" ayarının işaretli olduğunu göreceksin. Bu işareti kaldırdığında ilgili klasör de derleme işlemine katılmış olacak.


NOT:İnsanları yanıltmayayım diye tekrardan buraya ekleleme yaptım.
Başlık: Ynt: STM32CubeIDE undefined reference to Hatası
Gönderen: Tagli - 24 Temmuz 2020, 19:04:15
Statik kütüphane oluşturma seçeneğinin doğru seçenek olduğundan şüpheliyim. Hiç kullanmadım ama bildiğim kadarıyla bu seçenek, bir başka projede kullanılmak üzere önceden derlenmiş kullanıma hazır kütüphane oluşturmaya yarıyor.

Bahsettiğim seçeneğin çıkması için projenin üzerine değil, ilgili klasörün (mesela W5500 klasörü) üzerine sağ tıklayıp properties'e gitmek gerekiyor.
Başlık: Ynt: STM32CubeIDE undefined reference to Hatası
Gönderen: M_B - 24 Temmuz 2020, 19:12:00
Alıntı yapılan: Tagli - 24 Temmuz 2020, 19:04:15Statik kütüphane oluşturma seçeneğinin doğru seçenek olduğundan şüpheliyim. Hiç kullanmadım ama bildiğim kadarıyla bu seçenek, bir başka projede kullanılmak üzere önceden derlenmiş kullanıma hazır kütüphane oluşturmaya yarıyor.
Bu konuda birşey diyemiyecem.
Alıntı yapılan: Tagli - 24 Temmuz 2020, 19:04:15Bahsettiğim seçeneğin çıkması için projenin üzerine değil, ilgili klasörün (mesela W5500 klasörü) üzerine sağ tıklayıp properties'e gitmek gerekiyor.
O zaman cıkıyor. Birde oyle deneyecem.
Başlık: Ynt: STM32CubeIDE undefined reference to Hatası
Gönderen: M_B - 24 Temmuz 2020, 19:20:28
@Tagli  Hocam;

Haklıymışsınız. Static Library Cozum degil. ( Derleme yaptığı icin sonuca dikkat etmedim. Meğersem lib olusturuyormuş )

Gerçek Çozum ise
Bahsettiğiniz seçeneğin çıkması için projenin üzerine değil, ilgili klasörün (mesela W5500 klasörü) üzerine sağ tıklayıp properties'e gitmek ve ordan
"Exclude resource from build" ayarının işaretli olduğunu göreceksin. Bu işareti kaldırdığında ilgili klasör de derleme işlemine katılmış olacak.

Hocam uyarı ve bilgilendirme için Teşekkürler.