IAR コンパイラを使用して、MSP430 マイクロチップに基づくプロジェクトに取り組んでいます。単純化された問題は次のとおりです。
私のプロジェクトには 3 つのファイルがあります。
clock.hで:
#define MCLK_8MHZ
void clk_init(void);
clock.cで:
#include "clock.h"
void clk_init(void)
{
#ifdef MCLK_8MHZ
#define delay_ms(x) __delay_cycles((long)(1000000*(double)x/1000.0))
#endif
#ifdef MCLK_12MHZ
...
#endif
}
main.cで:
#include "clock.h"
clk_init();
delay_ms(5);
そして、コンパイラは 暗黙的に宣言された関数「delay_ms」と言うでしょう
delay_ms() をマクロではなく関数と間違えたと思います。確かに、それを実際の関数として定義できます。しかし、それでは時間制御の精度が損なわれると思っていました。
この問題を解決するには?