Ricky Jiang
/
Nucleo_printf
main.cpp
- Committer:
- rickyqqj
- Date:
- 2020-02-28
- Revision:
- 0:672cd82db097
- Child:
- 1:cedf6a3c299e
File content as of revision 0:672cd82db097:
#include "mbed.h" Serial pc(USBTX, USBRX); Serial reader(PB_6, PB_7); InterruptIn Green(PB_0); DigitalIn CTS(PB_1); int TXBsize = 1; char TXB[16]; uint8_t READRFID = 0b01010010; uint8_t WRITEEEPROM = 0b01010000; uint8_t POLLING = 0x1; uint8_t POLLINGADDRESS = 0; uint8_t RFIDTYPEADDRESS = 0x3; uint8_t RFIDTYPE = 0x0; uint8_t ADDRESS = 0; uint8_t KEY = 0; bool FINDINGUID = 0; bool UIDFOUND = 0; bool SENDSUCCESS = 0; bool UIDTRIED = 0; uint8_t UID[8]; void readerRX() { if(FINDINGUID == 1) {UID[0]=reader.getc(); UID[1]=reader.getc(); UID[2]=reader.getc(); UID[3]=reader.getc(); UID[4]=reader.getc(); UID[5]=reader.getc(); UID[6]=reader.getc(); UID[7]=reader.getc(); pc.printf("%d %d %d %d %d %d %d %d", UID[7],UID[6], UID[5], UID[4], UID[3], UID[2], UID[1], UID[0]); UIDFOUND = 1; FINDINGUID = 0; } else {pc.putc(reader.getc());} } void GreenIRQ() { bool sent = 0; Timer timer; timer.start(); while(!UIDTRIED) {sent = 0; while (sent == 0) {if(CTS == 0) { FINDINGUID = 1; reader.putc(0b01010101); UIDTRIED = 1; sent = 1;} } } if(UIDTRIED == 1 && UIDFOUND == 0) { FINDINGUID = 0;} TXBsize = 3; TXB[0]=READRFID; TXB[1]=KEY; TXB[2]=ADDRESS; //TXB[2]=0xE0; TXB[3]=0x04; TXB[4]=0x01; TXB[5]=0x50; TXB[6]=0xD4; TXB[7]=0xF2; TXB[8]=0x23; TXB[9]=0x87; uint8_t TXBused = 0; if(SENDSUCCESS == 1 && TXB[0] == READRFID) {ADDRESS++; SENDSUCCESS = 0; if(ADDRESS == 0) {KEY++; if(KEY == 0b00100000) {KEY = 0b10000000;} else if(KEY == 0b10100000) {KEY = 0b00000000;} pc.printf("%d",KEY); } TXB[1]=ADDRESS; TXB[2]=KEY; } // Time keeping while (TXBused<TXBsize){ if (CTS == 0 && sent == 0){ reader.putc(TXB[TXBused]); // pc.printf("%d",TXB[TXBused]); TXBused++; // sent = 1; } else if(CTS == 1) {sent = 0; } } SENDSUCCESS = 1; } void initRFID() { bool sent = 0; while (sent ==0 ) { if(CTS == 0) {TXBsize = 3; reader.putc(WRITEEEPROM); reader.putc(RFIDTYPEADDRESS); reader.putc(RFIDTYPE); sent = 1; } } while (CTS == 0){} while (CTS == 1){} sent = 0; while (sent ==0 ) { if(CTS == 0) {TXBsize = 3; reader.putc(WRITEEEPROM); reader.putc(POLLINGADDRESS); reader.putc(POLLING); sent = 1; } } } int main() { pc.baud(9600); reader.baud(9600); initRFID(); reader.attach(&readerRX,Serial::RxIrq); Green.fall(&GreenIRQ); // attach the address of the flip function to the rising edge while(true) { } }