前天写了几段代码,出现了error: #18:expexted a ")",当时我挺懵的,一直反复的检查了出错的地方,一直找不出来。
后面去百度查了一下,都是说在定义头文件时,宏定义#define语句最后不要加分号!去掉分号即可消除error
但是经过排查,我的所有代码都没有这样的写法,说明错的不是这种情况。后来,我继续检查,发现了问题。
void SpiWritePage(unsigned char* buff,unsigned int addr,unsigned short len)
{
unsigned i=0;
SpiWriteEnalb();
SpiWaitBusy(); //等待空闲
SPI_FLASH_CS=0;
SPI_ReadWriteByte(Page_Program);
SPI_ReadWriteByte(addr>>16); //发送24位地址的最高8位
SPI_ReadWriteByte(addr>>8); //发送24位地址的中间8位
SPI_ReadWriteByte(addr); //发送24位地址的最低8位
for(i=0;i<len;i++)
{
SPI_ReadWriteByte(*buff++);
}
SPI_FLASH_CS=1; //拉高片选
SpiWaitBusy(); //等待空闲
printf("写入成功!\r\n");
}
void SpiReadData(unsigned char* buff,unsigned int addr,unsigned short len)
{
unsigned short i=0;
SpiWaitBusy();
SPI_FLASH_CS=0;//拉低片选
SPI_ReadWriteByte(Reader_Data);
SPI_ReadWriteByte(addr>>16);
SPI_ReadWriteByte(addr>>8);
SPI_ReadWriteByte(addr);
for(i=0;i<len;i++)
{
*buff++ =SPI_ReadWriteByte(0xff);//读取状态
}
SPI_FLASH_CS=1;//拉高片选
SpiWaitBusy();
}
由于我写的这两个函数,一个是读取寄存器的数据,一个是向寄存器写入参数,方法都差不多,函数里面调用函数一样,用的形参都一样,keil5就会给我报错。后面把函数的形参改为如下:
这样就可以成功通过编译!!!程序也可以正常运行!!!
我用的是keil5 5.27.1.0版本。学识尚浅,如有不对的地方,还望各位海涵!!!同时欢迎大家在评论区留言。