C++でHALを使用してSTM32用のプロジェクトを作成したいと思います。残念ながら、CubeMXはCのプロジェクトのみをサポートしています。ただし、HALはC++をサポートしています。
CubeMXでプロジェクトを作成し、上記のIDEのいずれかにインポートしようとしましたが、Cプロジェクトとしてインポートされているため、成功しませんでした。したがって、それは良い解決策のようには見えません。
また、上記のIDE=でC++プロジェクトを作成し、それにCubeMXからファイルを追加してみました。より論理的であるようですが、構成が原因で正しい方法で実行できませんまだ間違っています。
HALを使用するために、EclipseまたはAtollic TrueSTUDIOで新しいC++プロジェクトを構成する方法を誰かに説明してもらえますか?
CubeMXの最近のバージョンは、EclipseベースのIDE STM32ターゲット用に開発するように事前設定されている)System Workbench 4 STM32をサポートしています。プロジェクトをC++に変換するオプションがあります(右クリックプロジェクトエクスプローラーでプロジェクトを選択し、[C++に変換]を選択します。
この方法を使用した直接的な経験はありません。私たちはSTM HALを使用し、その上にC++アプリケーションを構築しているため、これは確実に可能ですが、IDEはKeilなので、YMMVです。
STM32CubeMXで生成されたAtollic Eclipse CプロジェクトをC++に変換する方法(3ステップ):
<natures> <nature>org.Eclipse.cdt.core.cnature</nature> <nature>org.Eclipse.cdt.core.ccnature</nature>
http://www.openstm32.org/forumthread1244 を参照してください。これは、プロジェクトを開いたままEclipseを実行しているときに実行できます。結果:main.cppはコンパイルされますが、インクルードパスが間違っているため、インクルードファイルが見つかりません。 cppnatureはより良い名前になりました。編集:メニューのファイル/新規作成/その他/ C/C++メイクプロジェクトに変換を使用してC++ネイチャーを追加する方法のヒントについては、「C++ネイチャー」のEclipseヘルプを検索してください。defined extern "C"
-によって関数プロトタイプを変更します) 2 .cサイドが.cppで定義されたコールバックを呼び出しています(.cppサイドの関数定義をdefined extern "C"
を前に付けて変更します。いくつかのメモ:
改善の余地:これらの変更をより自動化するために編集できるCubeMXテンプレートがあるかもしれませんが、このハックをよりエレガントにするためのCubeMXテンプレートについて十分に知りません。
私もIAR EWARMでCubeMXを使用し、同様の(ただし少し簡単)プロセスを実行して.cppプロジェクトに変換します。