static変数が変わらない
static U16 flag_event = 0;
を関数外で宣言 関数内で
flag_event = 1;
のように数値を代入しても、1が入らずに0のまま。。
static U16 flag_event;
と宣言して、main()の文頭でflag_event = 0;
し、それ以降に呼び出される関数でflag_event = 1;
したら、ちゃんと1が代入された。
これはおかしいと思って調査。
#リンカの設定を変えないといけない static変数を、数値代入して宣言すると、CubeSute+ではデフォルト設定ではROM領域に保存されて、数値変更ができなくなるらしい。 CubeSute+のビルドツールから リンク・オプションでセクション>ROMからRAMへマップするセクションで
D=R
D_1=R_1
D_2=R_2
を追加。 http://documentation.renesas.com/doc/products/tool/doc/r20ut2470jj0100_qscdrx.pdf によると
変数のデフォルトの配置セクションは,次のとおりになります。
初期値なし変数:
B, B_2, B_1
セクション
初期値あり変数:
D, D_2, D_1
セクション
(ROM)
R, R_2, R_1
セクション
(RAM)
const変数:
C, C_2, C_1
セクション
Share this post
Twitter
Facebook
LinkedIn