今天在編譯ata5790的程序就沒mtk600那么順利了,當然那也不叫順利,也是悲劇的很,說白了,對于IAR這個編譯器我佩服的五體投地。
不是一般的強大,不是一般的復(fù)雜,不是一般的難用。
好了,好了,回歸正題。
編譯報錯是這樣的:
Error[Pa043]: the keyword "__regvar" is not available with the current settings. Registers must be locked with --lock_regs before __regvar can be used C:Userspang123huiDesktopPKE_ata 5790main.c 154
簡單查了一下擴展關(guān)鍵字__regvar把變量定義到寄存器中,IAR編譯器內(nèi)部使用了部分工作寄存器,留給用戶的只有R4-R15供12個寄存器供用戶使用,要使用工作寄存器必須在工程選項里打開鎖定選項。
我就是因為沒有在工程選項中打開鎖定選項,故導(dǎo)致編譯報錯。
比如:
/*VariabletoloadtheDevicetypefromEEPROM*/__regvar__no_initstaticUINT8glDeviceType@5;/*Flagtoindicatethechallengelength*/__regvar__no_initstaticUINT8glDivChallengeLength@6;
這時就要在Project ——> Option ——> C/C++ Compiler ——> Code中進行相應(yīng)設(shè)置,如下圖所示。