/** * @brief Koovox_send_message * @param * msg: the address point of the message * len: the length of the message * @retval None */ void Koovox_send_message(uint8_t* msg, uint8_t len) { uint8_t i = 0; for(; i<len; i++) { USART_SendData8(USART1, msg[i]); while(!USART_GetFlagStatus(USART1, USART_FLAG_TXE)); } USART_SendData8(USART1, '{'); while(!USART_GetFlagStatus(USART1, USART_FLAG_TXE)); USART_SendData8(USART1, '}'); while(!USART_GetFlagStatus(USART1, USART_FLAG_TXE)); }
void uart_send_byte(int len,unsigned char *data) { int i = 0; //GPIO_WriteBit(GPIOD, GPIO_Pin_0, SET); for(i = 0;i < len;i ++) { while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) != SET); USART_SendData8(USART1,data[i]); } //GPIO_WriteBit(GPIOD, GPIO_Pin_0, RESET); }
unsigned char _Device_Uart_Send_Bytes(unsigned char *sendByte, unsigned int length){ unsigned int i; //if(Usart_Peripheral_Enable_Flag == DeviceOff){ if((Usart_Peripheral_Flag & fUart_Enable) == 0){ return Func_Fail; } #if (_Set_UART_AS_Half_Duplex_Transmission_ == 1) _Device_Set_Uart_RX_Interrupt(DeviceOff); #endif //GPIO_WriteHigh(LED2_PORT, LED2_PIN); //set TX status // GPIO_WriteHigh(URAT_TX_Setting_PORT, URAT_TX_Setting_PIN); // GPIO_WriteHigh(URAT_TX_Setting_PORT, URAT_TX_Setting_PIN); //for delay for(i = 0; i < length; i++){ USART_SendData8(USART1, (*(sendByte + i))); SendingWhileTimeOutCount = 0; //while (USART_GetFlagStatus(USART1, UART2_FLAG_TXE) == RESET){ //Transmit Data Register Empty flag while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET){ //Transmission Complete flag if(SendingWhileTimeOutCount >= SendingTimeOutCycle){ break; } SendingWhileTimeOutCount++; }//while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) } //disable TX status // GPIO_WriteLow(URAT_TX_Setting_PORT, URAT_TX_Setting_PIN); // GPIO_WriteLow(URAT_TX_Setting_PORT, URAT_TX_Setting_PIN); //for delay //GPIO_WriteLow(LED2_PORT, LED2_PIN); #if (_Set_UART_AS_Half_Duplex_Transmission_ == 1) _Device_Set_Uart_RX_Interrupt(DeviceOn); #endif return Func_Complete; }
/** * @brief Main program. * @param None * @retval None */ void main(void) { #ifdef USART_IrDA_TRANSMIT JOYState_TypeDef Key = (JOYState_TypeDef)0; #else /* USART_IrDA_RECEIVE */ uint8_t ReceivedData = 0; #endif /*USART_IrDA_TRANSMIT*/ /* USART configuration -------------------------------------------*/ USART_Config(); #ifdef USART_IrDA_TRANSMIT while (1) { /* Read Key */ while (Key == JOY_NONE) { Key = ReadJoystick(); } switch (Key) { case JOY_UP: USART_SendData8(EVAL_COM1, JOY_UP); while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} Key = JOY_NONE; break; case JOY_DOWN: USART_SendData8(EVAL_COM1, JOY_DOWN); while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} Key = JOY_NONE; break; case JOY_LEFT: USART_SendData8(EVAL_COM1, JOY_LEFT); while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} Key = JOY_NONE; break; case JOY_RIGHT: USART_SendData8(EVAL_COM1, JOY_RIGHT); while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} Key = JOY_NONE; break; case JOY_SEL: USART_SendData8(EVAL_COM1, JOY_SEL); while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {} Key = JOY_NONE; break; default: break; } } #else /* USART_IrDA_RECEIVE */ /* Initialize I/Os in Output Mode for LEDs */ STM_EVAL_LEDInit(LED1); STM_EVAL_LEDInit(LED2); STM_EVAL_LEDInit(LED3); STM_EVAL_LEDInit(LED4); /* Turn on LEDs */ STM_EVAL_LEDOn(LED1); STM_EVAL_LEDOn(LED2); STM_EVAL_LEDOn(LED3); STM_EVAL_LEDOn(LED4); while (1) { /* Wait until a byte is received */ while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_RXNE) == RESET) {} /* Read the received byte */ ReceivedData = USART_ReceiveData8(EVAL_COM1); switch (ReceivedData) { /* LED4 toggle */ case JOY_UP: STM_EVAL_LEDToggle(LED4); break; /* LED3 toggle */ case JOY_DOWN: STM_EVAL_LEDToggle(LED3); break; /* LED2 toggle */ case JOY_LEFT: STM_EVAL_LEDToggle(LED2); break; /* LED1 toggle */ case JOY_RIGHT: STM_EVAL_LEDToggle(LED1); break; case JOY_SEL: STM_EVAL_LEDToggle(LED1); STM_EVAL_LEDToggle(LED2); STM_EVAL_LEDToggle(LED3); STM_EVAL_LEDToggle(LED4); break; default: break; } } #endif /*USART_IrDA_TRANSMIT*/ }
/** * @brief Main program. * @param None * @retval None */ void main(void) { uint32_t index = 0; /* CLK configuration -------------------------------------------*/ CLK_Config(); /* Set the MOSI and SCK at high level */ GPIO_ExternalPullUpConfig(GPIOB, GPIO_Pin_6 | GPIO_Pin_5, ENABLE); #ifdef USE_STM8L1526_EVAL /* Set USART CK at high level */ GPIO_ExternalPullUpConfig(GPIOC, GPIO_Pin_4, ENABLE); #else /* USE_STM8L1528_EVAL is defined */ /* Set USART CK at high level */ GPIO_ExternalPullUpConfig(GPIOH, GPIO_Pin_6, ENABLE); #endif /* USE_STM8L1526_EVAL */ /* USART configuration -------------------------------------------*/ USART_Config(); /* SPI configuration -------------------------------------------*/ SPI_Config(); /*Disable USART the master*/ USART_Cmd(EVAL_COM1, DISABLE); /* DMA configuration -------------------------------------------*/ DMA_Config(); /* Enable USART */ USART_Cmd(EVAL_COM1, ENABLE); /* Insert Delay to ensure Synchro w/ SPI */ for (index = 0; index < 0xFF; index++); /* Enable SPI */ SPI_Cmd(SPI1, ENABLE); USART_ITConfig(EVAL_COM1, USART_IT_TC, ENABLE); /* Wait until Data transmitted to SPI*/ while (UsartTransferStatus != 2); /* Wait the SPI DMA Rx transfer complete */ while (DMA_GetFlagStatus((DMA_FLAG_TypeDef)SPI_DMA_FlagTCRx) == RESET); /* Check the correctness of written dada */ TransferStatus1 = Buffercmp((uint8_t*)RxBuffer1, SPIBuffer_Rx, RX_BUFFER_SIZE); /* TransferStatus1 = PASSED, if the received data by USART and received data by SPI1 are the same */ /* TransferStatus1 = FAILED, if the received data by USART and received data by SPI1 are different */ if (TransferStatus1 != FAILED) { for (index = 0; index < MESSAGE2_SIZE; index++) { /* Wait while USART TC = 0 */ while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET); /* Send on byte from stm8l15x USART to HyperTerminal */ USART_SendData8(EVAL_COM1, Message2[index]); } } else { for (index = 0; index < MESSAGE3_SIZE; index++) { /* Wait while USART TC = 0 */ while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET); /* Send on byte from stm8l15x USART to HyperTerminal */ USART_SendData8(EVAL_COM1, Message3[index]); } } while (1) {} }