我尝试编译代码来修改地址并出错。这是代码的初始部分。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <fcntl.h>
#include <sys/types.h>
#define FATAL do { fprintf(stderr, "Error at line %d, file %s (%d) [%s]\n",__LINE__, __FILE__, errno, strerror(errno)); exit(1); } while(0)
#define MAP_SIZE 4096UL
#define MAP_MASK (MAP_SIZE - 1)
void GenerateDelay(int val);
int main(void) {
int fd;
int *map_base_c,*map_base_d, *map_base_p, *virt_addr;
off_t target;
off_t rTCF0,rTCON,rTCNTB0,rTCMPB0,rTCNTO0; // The error is at this line (115)
rTCFG0 = 0x51000000; //Timer 0 configuration
rTCON = 0x51000008; //Timer rTCON
rTCNTB0 = 0x5100000c; //Timer count buffer 0
rTCMPB0 = 0x51000010; //Timer compare buffer 0
rTCNTO0 = 0x51000014; //Timer count observation 0
return 0;
}
它显示的错误是
pwmTry.c: In function 'main':
pwmTry.c:115: error: expected identifier or '(' before 'volatile'
pwmTry.c:115: error: expected ')' before numeric constant
我在代码中指出了第115行 我不明白代码有什么问题 - 我之前已经多次犯过这个错误,我只需要删除有问题的行。这里虽然错误在声明中,所以我无法删除它。
我编写了另一个看起来非常相似的代码并且编译时没有错误。这是:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <fcntl.h>
#define FATAL do { fprintf(stderr, "Error at line %d, file %s (%d) [%s]\n",__LINE__, __FILE__, errno, strerror(errno)); exit(1); } while(0)
#define MAP_SIZE 4096UL
#define MAP_MASK (MAP_SIZE - 1)
void GenerateDelay(int val);
int main(void) {
int fd;
int *map_base_c,*map_base_d, *map_base_p, *virt_addr;
off_t target,control,data,pullup;
//following the configuration order of setting
//1. Data register
//2. Control register
//3. Pullup register
control=0x56000010;
data =0x56000014;
pullup =0x56000018;
return 0;
}
答案 0 :(得分:3)
keltar的comment使我们能够找到问题。
我做了以下事情:
arm-linux-gcc-4.3.2 -E pwmTry.c
并且发现名称rTCON
等已在其他地方定义为宏。其中存在问题。
这是一个非常有价值的提示,谢谢!