STM32CubeIDE C++ Kütüphane Ekleme ve Derleme

Başlatan M_B, 27 Temmuz 2020, 11:10:57

M_B

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.



İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Tagli

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?
Gökçe Tağlıoğlu

M_B

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.

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

M_B

Hocam proje aşamalarım



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.


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 )

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

JKramer

Hata mesajında yazdığı gibi, uint8_t tanımlı değil. Kendiniz yazabilir ya da stdint.h'i include edebilirsiniz.

M_B

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.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

brandice5

main.c dosyasının uzantısını main.cpp yap.

M_B

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.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

M_B

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet