I'm writing a code to read from and write to 'serial SPI Frash memory' ,but i have an error
"serial_mem_test:48: error: 'unit16_t' does not name a type
serial_mem_test:135: error: 'unit16_t' does not name a type".
I can't solve the reason for this error.
Can anyone tell me how to compile this program.
==============here is my code========================
#include<SPI.h>
#include<string.h>
#include<stdio.h>
#include<stdint.h>
//define pin no.
#define M25P80_SEL_PIN 10
#define MAX_SECTOR_SIZE 16
#define FM25V10_SEL_PIN 11
//?????DEFINE???????
#define CMD_WRITE_ENABLE 0x06
#define CMD_WRITE_DISABLE 0x04
#define CMD_PAGE_PROGRAM 0x02
#define CMD_SECTOR_ERASE 0xD8
#define CMD_BULK_ERASE 0xC7
#define CMD_READ_DATA_BYTES 0x03
#define CMD_POWER_DOWN 0xB9
#define CMD_POWER_ON 0xA8
#define CMD_READ_IDENTIFICATION1 0x9F
#define CMD_READ_IDENTIFICATION2 0x9E
#define CMD_READ_STATUS_REGISTER 0x05
#define CMD_WRITE_STATUS_REGISTER 0x01
//Begin to use M25P80
void START_M25P80(){
pinMode(M25P80_SEL_PIN, OUTPUT);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV2);
SPI.setDataMode(SPI_MODE0);
deselect_M25P80();
}
//Begin to use FM25V10
void START_FM25V10(){
pinMode(FM25V10_SEL_PIN, OUTPUT);
SPI.begin();
SPI.setBitOrder(MSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV2);
SPI.setDataMode(SPI_MODE0);
deselect_FM25V10();
}
//Begin to use M25P80
void FINISH_M25P80(){
powerDown();
SPI.end();
}
//Finish to use FM25V10
void FINISH_FM25V10(){
powerDown();
SPI.end();
}
//Chip select(M25P80)
void select_M25P80(){
digitalWrite(M25P80_SEL_PIN, LOW);
}
//Chip deselect(M25P80)
void deselect_M25P80(){
digitalWrite(M25P80_SEL_PIN, HIGH);
}
//Chip select(FM25V10)
void select_FM25V10(){
digitalWrite(FM25V10_SEL_PIN, LOW);
}
//Chip deselect(FM25V10)
void deselect_FM25V10(){
digitalWrite(FM25V10_SEL_PIN, HIGH);
}
//Powerdown(M25P80)
void powerDown(){
select_M25P80();
SPI.transfer(CMD_POWER_DOWN);
deselect_M25P80;
}
//Get status register01(M25P80)
byte readStatusReg01(){
byte rc;
select_M25P80();
SPI.transfer(CMD_READ_IDENTIFICATION1);
rc = SPI.transfer(0xFF);
deselect_M25P80();
}
//Get status register02(M25P80)
byte readStatusReg02(){
byte rc;
select_M25P80();
SPI.transfer(CMD_READ_IDENTIFICATION2);
rc = SPI.transfer(0xFF);
deselect_M25P80();
}
//Check program(M25P80)
//d[7]=1 writing,=0 not writing
boolean IsBusy(){
char d[8];
select_M25P80();
SPI.transfer(CMD_READ_STATUS_REGISTER);
for(byte i=0; i<8; i++){
d = SPI.transfer(0x00);
- }*
- deselect_M25P80();*
- if(d[7] & 0)*
- return true;*
- return false;*
}
//Enable writing
void WriteEnable(){
-
select_M25P80();*
-
SPI.transfer(CMD_WRITE_ENABLE);*
-
deselect_M25P80;*
}
//read data
unit16_t read_M25P80(uint32_t addr, uint8_t *buf, uint16_t n){ -
select_M25P80();*
-
SPI.transfer(CMD_READ_DATA);*
-
SPI.transfer(addr>>16);*
-
SPI.transfer((addr>>8) & 0xFF);*
-
SPI.transfer(addr & 0xFF);*
-
uint16_t i;*
-
for(i=0; i<n; i++){*
_ buf = SPI.transfer(0x00);_
* }*
* deselect();*
* return i;*
}
//Erase Sector(4kb/secter)
boolean eraseSecter(uint16_t sect_no, boolean flgwait){
* uint32_t addr = sect_no;
_ addr<<=12;*_
* WriteEnable();*
* select_M25P80();
SPI.transfer(CMD_SECTOR_ERASE);
_ SPI.transfer((addr>>16) & 0xff);_
_ SPI.transfer((addr>>8) & 0xff);_
_ SPI.transfer(addr & 0xff);_
deselect_M25P80();*
* while(IsBusy() & flgwait){*
* delay(10);*
* }*
* return true;*
}
//Write data
uint16_t page_write(uint16_t sect_no, uint16_t inaddr, byte* data, byte n){
* uint32_t addr = sect_no;
_ int i;_
_ addr<<=12;_
_ addr += inaddr;*_
* WriteEnable();*
* if(IsBusy()){*
* return 0;*
* }*
* select_M25P80();
SPI.transfer(CMD_PAGE_PROGRAM);
_ SPI.transfer((addr>>16) & 0xff);_
_ SPI.transfer((addr>>8) & 0xff);_
_ SPI.transfer(addr & 0xff);*_
* for(i=0; i < n; i++){*
_ SPI.transfer(data*);
}_
deselect_M25P80();
_ while(IsBusy());*_
* return i;*
}
//p.s. some of the function for FM25V10 is not have writtten.
//and some smile face is number "8".