0

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() をマクロではなく関数と間違えたと思います。確かに、それを実際の関数として定義できます。しかし、それでは時間制御の精度が損なわれると思っていました。

この問題を解決するには?

4

1 に答える 1