预期的标识符或'('在数字常量ATMEGA之前

时间:2017-08-11 08:07:53

标签: c

我想将atmega32连接到MMC / SD卡,但我有问题:

#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 个答案:

答案 0 :(得分:1)

有很多问题。首先,这个数字不适合在char中。 char通常是8位,因此它可以包含2 ^ 8个不同的值(例如0-255)。

其次,宏只是被它定义的东西取代。所以

#define F_CPU 8000000UL 
unsigned char F_CPU;

变为

unsigned char 8000000UL;

这不是有效的代码。变量需要名称,因此您需要执行类似

的操作
unsigned long variableContainingCPUSpeed = F_CPU;

然后将替换为

unsigned long variableContainingCPUSpeed = 8000000UL;

但是,在您的示例中,您根本不需要将此速度存储在变量中。对于波特率计算,直接使用宏。因此,您可以简单地省略unsigned char F_CPU;行。