RXマイコンでCからC++のコードを実行したい
タイトルの通りです。前提は以下の通り、
- 開発環境:e2studio 6.3
- CCRX: v3.0.0
- マイコン:RX71M
経緯
e2studioでC++プロジェクト生成した際に、intprg.cがintprg.cppになってくれないため、intprg.c上に記述した関数の実行先をC++のメソッドにしたいと思った
解決方法
以下の流れで参照の流れができていればよい。
//intprg.c void Excep_CMT0_CMI0(void) { interrupt_func_cmt0(); }
//InteruptInterface.hpp #ifdef __cplusplus extern "C" { #endif void interrupt_func_cmt0(void); #ifdef __cplusplus } #endif
//InterupptInterface.cpp #include "InteruptInterface.hpp" using namespace hogehoge; // you can use namespace void interrupt_func_cmt0(void) { // any proccessing below() LEDDriver::LED1_TURN_ON(); }
問題点
この状態では、public
でstatic
な関数しか指定できない。
JavaScriptのイベントのように、コールバック関数で、特定のオブジェクトのメソッドを唱えるには、
割り込み関数interrupt_func_cmt0
内でうまくやる必要がある。
例えば、リアクティブプログラミング
を参考に登録した関数を呼び出せれば、汎用性もあり、効率が良くなるだろう。