1.本日の内容
(1) CubeIDEで階層の違うファイルのヘッダファイルをインクルードする方法について。
使用マイコン:
・目次
2.内容
(1) ファイルのインクルード方法
・インクルードする方法としては、相対パスで指定する方法と絶対パスで指定する方法がある。
・同じファイル領域にあるヘッダファイルであれば、そのまま、#includeでヘッダファイルをインクルードすればよい。
・別フォルダにあるファイルをインクルードする場合は、パスを指定する。
(2) 同じ階層のファイルの場合
/* USER CODE BEGIN Includes */ #include "printf.h" /* USER CODE END Includes */
別の階層の場合
(3) 別の階層のファイルの場合
・printフォルダのprintf.hファイルをインクルードする。
・main.cファイル
/* USER CODE BEGIN Includes */ #include "print/printf.h" /* USER CODE END Includes */
・print.cファイル
#include "printf.h"
(4) 別の階層のファイルの場合(相対パスでインクルード)
printフォルダのprintf.hファイルをインクルードする。
・ADフォルダのadc.cファイル
#include "adc.h" #include "../print/printf.h"
・main.cファイル
/* USER CODE BEGIN Includes */ #include "print/printf.h" #include "AD/adc.h" /* USER CODE END Includes */
※ ../は、1個前のファイルを示す。
今回は、adc.cファイルから見て、1個前のファイル/printファイル/printf.hの位置にあるため、../print/printf.h となっている。
(5) 別の階層のファイルの場合(絶対パスでインクルード)
printフォルダのprintf.hファイルをインクルードする。
CubeIDEで下記設定をすることによって、フォルダへのパスが通り、相対パス(../)ではなく、ADフォルダでも、print/printf.hやprintf.hのように書くことが可能になる。
(a) Srcへのファイルパスを通す。(print/printf.hで書く場合)
・設定するファイルの上で、右クリック(下記写真では、AD_DMA)
・Propertiesをクリック
・Path and Symbolsに移動し、Addをクリック
・パスを追加するフォルダ名を追加する。(今回はCore/Src)
・Apply and Closeを押す。
上記を設定することにより、下記書き方でインクルードすることが出来る。
・adc.cファイル
#include "adc.h" #include "print/printf.h"
つまり、今回は、Srcファイルへのパスが通っているため、Srcまでのパスは考えなくてよくなる。
(b)printへのファイルパスを通す。(printf.hで書く場合)
これをprintフォルダへのパスを通した場合は、print/も不要になる。
・adc.cファイルでprintf.hファイルをインクルード
#include "adc.h" #include "printf.h"
(c) 上記以外に、下記方法でも、ファイルパスの追加が可能。
・Srcへのファイルパスを通す場合、通したいフォルダの上で右クリック
・Add/remove include path・・・を押下する。
(6) インクルード失敗時のエラー
・パスが通っていない場合、No such file or directoryというエラーが発生する。
これは、インクルードしているヘッダファイルが見つからないという意味だ。
3.関連記事
・STM32マイコン_2(UART通信:TeraTermにHellow表示) - Project_OKI’s diary
・STM32マイコン_3(UART通信:複数文字送信) - Project_OKI’s diary
・STM32マイコン_4(NVICの設定内容) - Project_OKI’s diary
・STM32マイコン_5(スイッチ入力とLED点灯、消灯) - Project_OKI’s diary
その他:
・CubeIDEの使い方(起動~デバック実行) - Project_OKI’s diary
C言語:
・組み込みの為のC言語基礎知識1(printf) - Project_OKI’s diary
・C言語基礎知識2(for分で処理を繰り返す) - Project_OKI’s diary
・C言語基礎知識3(配列) - Project_OKI’s diary