2017-08-11 14 views
-2

前に、私はMMC/SDカードでatmega32を接続したいが、私は問題があることであります。問題がある予想される識別子または「(」数値定数ATMEGA

#define F_CPU 8000000UL  
void uart_init(unsigned int BAUD) 

unsigned long int temp_BAUD; 
unsigned char F_CPU; 
temp_BAUD = (F_CPU)/16; 
temp_BAUD /= BAUD; 
temp_BAUD--; 

expected identifier or '(' before numeric constant
誰が何を教えてもらえこの問題はどのように解決されますか?
読んでいただきありがとうございます!

+1

あなたは忘れてしまった。 "void uart_init(unsigned int BAUD)"の後 –

+0

あなたの変数名 'unsigned char F_CPU;にマクロ名' F_CPU'を使用します。これは 'unsigned char 8000000UL;'に展開されますが間違っています。さらに関数宣言の後の ';'を前のコメントとして忘れてしまった。 –

+0

メッセージにはおそらくいくつかの行番号が含まれていますか?エラーメッセージや警告が表示された場合は、常に** ** ** ** ** ** ** ** **メッセージを、** ** ** ** **はそれを報告してください。 – Gerhardh

答えて

1

まず、そのため、2^8の異なる値(たとえば、0〜255)を含めることができます。

第2に、マクロは単にそれが定義するものに置き換えられます。だから、

#define F_CPU 8000000UL 
unsigned char F_CPU; 

は有効なコードではありません

unsigned char 8000000UL; 

になります。変数には名前が必要なので、しかし、あなたの例ではあなたがこの速度を保管する必要はありません、あなたはその後、

unsigned long variableContainingCPUSpeed = 8000000UL; 

に置き換えられます

unsigned long variableContainingCPUSpeed = F_CPU; 

ような何かをする必要があると思います変数。ボーの計算には、マクロを直接使用します。したがって、単にunsigned char F_CPU;行を省略することができます。

関連する問題