SPI 経由で外部デバイスと接続するための組み込みコードを作成しています。デバイスにはさまざまな長さのレジスタがいくつかあり、物事をまっすぐに保つために、次の構造を定義しました
typedef struct
{
uint16_t Signed :1; // Register is signed or unsigned
uint16_t CommLengthBytes :3; // The width of the register in bytes
uint16_t Address :12; // Register address
}ts_register;
次に、ソースで各レジスタを次のように定義しました
static const ts_register SAGCYC = {0, 1, 0x000};
static const ts_register DISNOLOAD = {0, 1, 0x001};
static const ts_register LCYCMODE = {0, 1, 0x004};
static const ts_register IRMSA = {0, 4, 0x31A};
static const ts_register IRMSB = {0, 4, 0x31B};
static const ts_register VRMS = {0, 4, 0x31C};
等
ts_registers の配列へのポインターを取得し、配列内のすべてのレジスターを読み取るために必要な SPI 転送をキューに入れ、コールバック関数を呼び出して応答を処理する関数があります。
私の問題は、次のように読み取りたい ts_registers の配列を作成しようとしたときに発生します。
ts_register regs_to_read[3] = {VRMS, IRMSA, IRMSB};
これにより、「式には定数値が必要です」というエラーが 3 回発生します (配列要素ごとに 1 回)。
それらは定数として定義されているため、何を見落としているのでしょうか?