uint8_t CSerialPort::readInt(uint8_t n) { switch (n) { case 1U: #if defined(STM32F4_DISCOVERY) return ReadUSART3(); #elif defined(STM32F4_PI) return ReadUSART1(); #elif defined(STM32F4_NUCLEO) return ReadUSART2(); #endif case 3U: #if defined(STM32F4_NUCLEO) && defined(STM32F4_NUCLEO_ARDUINO_HEADER) return ReadUSART1(); #else return ReadUART5(); #endif default: return 0U; } }
uint8_t CSerialPort::readInt(uint8_t n) { switch (n) { case 1U: #if defined(STM32F4_DISCOVERY) || defined(STM32F7_NUCLEO) return ReadUSART3(); #elif defined(STM32F4_PI) || defined(STM32F4_F4M) || defined(STM32F722_PI) || defined(STM32F722_F7M) || defined(STM32F722_RPT_HAT) || defined(STM32F4_DVM) return ReadUSART1(); #elif defined(STM32F4_NUCLEO) || defined(STM32F4_RPT_HAT_TGO) return ReadUSART2(); #endif case 3U: #if defined(STM32F4_NUCLEO) && defined(STM32F4_NUCLEO_ARDUINO_HEADER) return ReadUSART1(); #else return ReadUART5(); #endif default: return 0U; } }
void main(void) { BYTE bDataUSBReady1 = 0; BYTE bDataRS232Ready1 = 0; BYTE bDataUSBReady2 = 0; BYTE bDataRS232Ready2 = 0; BYTE bCountByte1 = 0; BYTE bCountByte2 = 0; BYTE bPosIn1 = 0; BYTE bPosIn2 = 0; BYTE bPosOut1 = 0; BYTE bPosOut2 = 0; while(1) { USBDeviceTasks(); if(USBDeviceState < CONFIGURED_STATE || USBSuspendControl==1) continue; /************* Seriale 1 *****************/ // Se ci sono dati da trasmettere su USART rileggo da USB if(!bDataUSBReady1) { bCountByte1 = getsUSBUSART(0, InBuff1, sizeof(InBuff1)); if(bCountByte1>0) { bDataUSBReady1 = 1; bPosIn1 = 0; } } // Ho preso dati da USB li scrivo su USART se la trasmissione è pronta if(bDataUSBReady1 && TXRdyUSART1()) { WriteUSART1(InBuff1[bPosIn1++]); // Una volta che sono stati scritti tutti i byte rileggo da USB if(bPosIn1==bCountByte1) bDataUSBReady1 = 0; } // Se ci sono dati nella USART li leggo e li metto nel buffer if(DataRdyUSART1() && bPosOut1<sizeof(OutBuff1)) { OutBuff1[bPosOut1] = ReadUSART1(); bPosOut1++; } // Se la USB è pronta per trasmettere e ci sono dati li scrivo su USB // Se arrivano dati ed il buffer è pieno c'è il rischio di perdere i dati if(USBUSARTIsTxTrfReady(0) && bPosOut1>0) { putUSBUSART(0, OutBuff1, bPosOut1); bPosOut1 = 0; } CDCTxService(0); /************* Seriale 2 *****************/ // Se ci sono dati da trasmettere su USART rileggo da USB if(!bDataUSBReady2) { bCountByte2 = getsUSBUSART(1, InBuff2, sizeof(InBuff2)); if(bCountByte2>0) { bDataUSBReady2 = 1; bPosIn2 = 0; } } // Ho preso dati da USB li scrivo su USART se la trasmissione è pronta if(bDataUSBReady2 && TXRdyUSART2()) { WriteUSART2(InBuff2[bPosIn2++]); // Una volta che sono stati scritti tutti i byte rileggo da USB if(bPosIn2==bCountByte2) bDataUSBReady2 = 0; } // Se ci sono dati nella USART li leggo e li metto nel buffer // Se arrivano dati ed il buffer è pieno c'è il rischio di perdere i dati if(DataRdyUSART2() && bPosOut2<sizeof(OutBuff2)) { OutBuff2[bPosOut2] = ReadUSART2(); bPosOut2++; } // Se la USB è pronta per trasmettere e ci sono dati li scrivo su USB if(USBUSARTIsTxTrfReady(1) && bPosOut2>0) { putUSBUSART(1, OutBuff2, bPosOut2); bPosOut2 = 0; } CDCTxService(1); } }//end main