void sendFrame(uint8_t ch, Mod_Master_Frame_TypeDef* aframe) { if (ch != 2) return; aframe->respOK = FALSE; setTimeoutCheck(MOD_TIMER_STOP); setFrameCheck(MOD_TIMER_STOP); stopUART(); aframe->request = FALSE; aframe->txCursor = 0; aframe->txOK = FALSE; aframe->modState = Mod_State_Sending; //for (ch = 0; ch < 100; ch ++) startTX(); UART2_SendData8(aframe->txframe[0]); UART2_TIEN = TRUE; return; }
void UART2_SendByte(u8 data) { UART2_SendData8((unsigned char)data); /* 等待传输结束 */ while (UART2_GetFlagStatus(UART2_FLAG_TXE) == RESET); }
void mod_int_tx(void) { uint16_t val; if (UART2_GetITStatus(UART2_IT_TXE) == SET) { UART2_ClearITPendingBit(UART2_IT_RXNE); if (modFrame.txCursor < (modFrame.txLen - 1)) { modFrame.txCursor ++; if (modFrame.txCursor == 1) modFrame.txCursor = 0 + 1; UART2_SendData8(modFrame.txframe[modFrame.txCursor]); if (modFrame.txCursor >= modFrame.txLen - 1) { UART2_TIEN = FALSE; UART2_TCIEN = TRUE; } } else { startRX(); } } if (UART2_GetITStatus(UART2_IT_TC) == SET) { stopUART(); //if (modFrame.txCursor >= (modFrame.txLen - 1)) //{ modFrame.txOK = TRUE; modFrame.rxOK = FALSE; modFrame.rxCursor = 0; modFrame.rxLen = 0; modFrame.rxBufOver = FALSE; modFrame.rxOver = FALSE; setFrameCheck(MOD_TIMER_STOP); setTimeoutCheck(MOD_TIMER_START); modFrame.modState = Mod_State_WaitForReply; modFrame.modEvent = Mod_Event_No; //reset Event startRX(); //} else { // while(1); //} } }
//Method to send strings via UART void UART_SendStr(const char *s) { //Set Max485 in Transmitter mode GPIO_WriteHigh(GPIOA, GPIO_PIN_3); while(*s) { UART2_SendData8((uint8_t)(*s)); while ((UART2->SR & UART2_SR_TXE ) != UART2_SR_TXE ); s++; } //Set Max485 in Receiver mode GPIO_WriteLow(GPIOA, GPIO_PIN_3); }