我想将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
谁能告诉我这个问题是什么以及如何解决这个问题?
谢谢你的阅读!
答案 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;
行。