Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: M_B - 27 Temmuz 2020, 11:10:57

Başlık: STM32CubeIDE C++ Kütüphane Ekleme ve Derleme
Gönderen: M_B - 27 Temmuz 2020, 11:10:57
Merhabalar,
STM32CubeIDE de normal olarak proje oluşturup yeni bir kütüphane ekleyip derleme yapabiliyorum.
Şimdi ise yapmak istediğim. Arduino kütüphanelerinden istediğim kütüphaneyi ekleyip derleyebilmek.
( Kütühane iceriğinde MCU ile ilgili ayar kısmı bulunmayan )

O yüzden STM32CubeIDE 'de C++ kodlarını ekleyip ve nasıl derleme yapabilirim. Nette bu konu ile ilgili herhangi bir video ve blog yazısına rast gelmedim. Genelde standart kullanım hakkında bilgiler var.
Bu konu ile ilgili bir yol gösterecek arkadaşlardan yardim istiyorum.

Teşekkürler.
 


Not:
İlgili Proje uzerine sag tıkladığımızda Convert to C++ seceneği cıkıyor.Bir kaç yol denesemde sonuca varamadım.



Başlık: Ynt: STM32CubeIDE C++ Kütüphane Ekleme ve Derleme
Gönderen: Tagli - 27 Temmuz 2020, 13:10:17
Projeyi en başından C++ projesi olarak oluşturmak daha doğru. Kütüphaneyi nasıl ekliyorsun? Projenin klasör yapısı nasıl? Tam olarak nasıl bir hata mesajı alıyorsun?
Başlık: Ynt: STM32CubeIDE C++ Kütüphane Ekleme ve Derleme
Gönderen: M_B - 27 Temmuz 2020, 13:14:39
Alıntı yapılan: Tagli - 27 Temmuz 2020, 13:10:17Projeyi en başından C++ projesi olarak oluşturmak daha doğru. Kütüphaneyi nasıl ekliyorsun? Projenin klasör yapısı nasıl? Tam olarak nasıl bir hata mesajı alıyorsun?
Hocam baştan onu da denedim.
Şimdi yeniden sıfırdan C++ Olarak basitten bir proje oluşturup hata ve ekran görüntülerini atacam.

Başlık: Ynt: STM32CubeIDE C++ Kütüphane Ekleme ve Derleme
Gönderen: M_B - 27 Temmuz 2020, 13:53:05
Hocam proje aşamalarım

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

Sonra Clok ve Led pin cıkıs ayarını yaptım ve derledim hata vermedi.

Sonrada
Core/inc Klasor icine Led Class olusturdum. inc üzerindeyken sağ klık new den Class sectim.
ve Ekran goruntusu. Not: Baktım resimde arka plan kotu gozukuyor. IDE yi normal rengine cevirdim.
(https://i.hizliresim.com/wbplBD.png) (https://hizliresim.com/wbplBD)

main.c

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "Led.h"
....
diger kısım standart dokunmadım.

Led.h
/*
 * Led.h
 *
 *  Created on: Jul 27, 2020
 *      Author: Mehmet
 */

#ifndef INC_LED_H_
#define INC_LED_H_

class Led {
private:
uint8_t pin;

public:
Led();
Led(uint8_t pin);
void init();
void on();
void off();
virtual ~Led();
};

#endif /* INC_LED_H_ */


Led.cpp
/*
 * Led.cpp
 *
 *  Created on: Jul 27, 2020
 *      Author: Mehmet
 */

#include <Led.h>


Led::Led(uint8_t pin){
    this->pin = pin;
    init();
}

void Led::init(){

  off();
}

void Led::on(){

}

void Led::off(){

}

Led::~Led(){

}

Derleme Hatası:
13:51:25 **** Incremental Build of configuration Debug for project F103_Led_Blink_Cpp_Deneme1 ****
make -j4 all
arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/main.o"
arm-none-eabi-g++ "../Core/Inc/Led.cpp" -mcpu=cortex-m3 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Core/Inc/Led.d" -MT"Core/Inc/Led.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Inc/Led.o"
In file included from ../Core/Inc/Led.cpp:8:0:
../Core/Inc/Led.h:13:4: error: 'uint8_t' does not name a type
    uint8_t pin;
    ^~~~~~~
../Core/Inc/Led.h:17:16: error: expected ')' before 'pin'
    Led(uint8_t pin);
                ^~~
../Core/Inc/Led.cpp:11:9: error: expected constructor, destructor, or type conversion before '(' token
 Led::Led(uint8_t pin){
         ^
make: *** [Core/Inc/subdir.mk:18: Core/Inc/Led.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from ../Core/Src/main.c:23:0:
../Core/Inc/Led.h:11:1: error: unknown type name 'class'
 class Led {
 ^~~~~
../Core/Inc/Led.h:11:11: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 class Led {
           ^
make: *** [Core/Src/subdir.mk:33: Core/Src/main.o] Error 1
"make -j4 all" terminated with exit code 2. Build might be incomplete.

13:51:26 Build Failed. 8 errors, 0 warnings. (took 1s.248ms)


Not: Yapmam gereken bir takım ayarlar falan vardır ama ben bilmiyorum.
Bu aşamayı gecersem Library eklemeyi de halletmiş olurum ( C++ icin Standart icin sorun yok )

Başlık: Ynt: STM32CubeIDE C++ Kütüphane Ekleme ve Derleme
Gönderen: JKramer - 27 Temmuz 2020, 14:14:33
Hata mesajında yazdığı gibi, uint8_t tanımlı değil. Kendiniz yazabilir ya da stdint.h'i include edebilirsiniz.
Başlık: Ynt: STM32CubeIDE C++ Kütüphane Ekleme ve Derleme
Gönderen: M_B - 27 Temmuz 2020, 19:11:34
Alıntı yapılan: JKramer - 27 Temmuz 2020, 14:14:33Hata mesajında yazdığı gibi, uint8_t tanımlı değil. Kendiniz yazabilir ya da stdint.h'i include edebilirsiniz.
Hocam ondan degil.
Hatta basit olsun diye main.c icerisine sadece bir Class tanımladım gene hata veriyor.
main.c icindeki class
class gunsinifi
{
 public:
 int gunsinifi_yil;
 int gunsinifi_ay;
 int gunsinifi_gun;

};
Hatasi ise:
19:06:33 **** Incremental Build of configuration Debug for project F103_Led_Blink_Cpp_Deneme1 ****
make -j4 all
arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m3 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F103xB -DDEBUG -c -I../Drivers/CMSIS/Device/ST/STM32F1xx/Include -I../Drivers/CMSIS/Include -I../Core/Inc -I../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy -I../Drivers/STM32F1xx_HAL_Driver/Inc -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Core/Src/main.d" -MT"Core/Src/main.o" --specs=nano.specs -mfloat-abi=soft -mthumb -o "Core/Src/main.o"
../Core/Src/main.c:27:1: error: unknown type name 'class'
 class gunsinifi
 ^~~~~
../Core/Src/main.c:28:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
 {
 ^
make: *** [Core/Src/subdir.mk:33: Core/Src/main.o] Error 1
"make -j4 all" terminated with exit code 2. Build might be incomplete.

19:06:34 Build Failed. 3 errors, 0 warnings. (took 921ms)

Sanırsam derleyiciye C++ ile yazdıgımızı bi yerden belirtmemiz lazım. Proje olustururken belirtiyoruz ama.
Hatadaki main.c:27:1:  class baslangic yeri.
Başlık: Ynt: STM32CubeIDE C++ Kütüphane Ekleme ve Derleme
Gönderen: brandice5 - 27 Temmuz 2020, 19:33:46
main.c dosyasının uzantısını main.cpp yap.
Başlık: Ynt: STM32CubeIDE C++ Kütüphane Ekleme ve Derleme
Gönderen: M_B - 27 Temmuz 2020, 20:05:25
Alıntı yapılan: brandice5 - 27 Temmuz 2020, 19:33:46main.c dosyasının uzantısını main.cpp yap.
Teşekkürler Hocam yaptım ve hatasız derlemeye başladı.
İlerledikçe sorularım olacaktır.
Başlık: Ynt: STM32CubeIDE C++ Kütüphane Ekleme ve Derleme
Gönderen: M_B - 27 Temmuz 2020, 22:14:28
Burdaki mantığı anlamadım.