Renesas Synergy™

FAQ 1011146 : CC-RXコンパイラを使用していますが、割り込み関数で変数の値を書き換えたが値が反映されません。

回答

通常関数と割り込み関数で参照している外部変数にはvolatile宣言を付加してください。

int data;void func(int x)
{
    data = x; /* <- 値をdataに代入後、割り込み関数でdata変数が書き換えられた場合、
                    data変数の値は既にレジスタに格納されており、
                    レジスタの値が使用されるため、
                    割り込み関数で書き換えた値が反映されない場合があります */
    ・・・
    if(data == 0)
    {
        ・・・
    }
}
volatile int data;

と宣言してください。

適用製品

CS+ (旧 CubeSuite+)
High-performance Embedded Workshop
RXファミリ用C/C++コンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください