Cortex-M4 Oject Oriented (OOP)

Başlatan Klein, 06 Ocak 2012, 20:22:29

z

main.cpp yi main.c olarak kaydedip projeden cpp olani kaldirip c olani dahil edersek sorun kalmiyor.

cpp ye ozgu bir durum olmali. Proje cpp olarak derlenirse yazdigin interrupt rutinlerini startup tarafindan gormuyor. Startupdaki rutinler gecerli oluyor.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

#16
Evet "C" de sorun yok. C++ da sorun var. Sorun mu tam da bilmiyorum ama bence sorun.

STM32F4xx.h içinde

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

satırları var.
Buna göre C++ ile çalışırken bu bloğu kendisinin açması gerek. Ama nedenini bilmediğim bir şekilde kendisi açmıyor.


Ekleme:
Şimdi size yazarken , bu tanım blok açıyor ama bu blok nerede kapanıyor diye merak ettim. STM32F4xx.h dosyasının en sonunda bloğu kapatıyor.  O blok sadece STM32F4xx.h içerisinde geçerli. Dolayısıyla bizim kodlar bu bloğun dışında kalıyor.

EOS

@Klein

Proje dosyasının uzantısını .cpp yaptığınızda, derleyici projeyi c++ kurallarına göre derleyecektir.
Debug yaparken IRQ Handler takılmasının sebebi bu olabilir.
Keil örnek klasorleri incelerseniz, RETARGET.C  dosyasınıda projeye eklediğini göreceksiniz.

not : bu dosyanın  SERIAL.C dosyası ile bağımlılığı var.aşağıdaki düzeltmeyi yaparsak SERIAL.C dosyasına ihtiyacımız kalmaz.
//extern int  sendchar(int ch);  /* in serial.c */
int sendchar (int ch){return 0;};