Преглед на файлове

[uart] add func rs485_send_block()

balbekova преди 5 години
родител
ревизия
5265fbcc81
променени са 2 файла, в които са добавени 13 реда и са изтрити 0 реда
  1. 1 0
      peripheral_modules/inc/usart.h
  2. 12 0
      peripheral_modules/src/usart.c

+ 1 - 0
peripheral_modules/inc/usart.h

@@ -48,6 +48,7 @@
 /* Queue */
 QueueHandle_t rs485TxQ, rs485RxQ;
 
+uint32_t rs485_send_block(uint8_t *data, uint16_t len);
 void rs485_enable_tx(void);
 #endif
 

+ 12 - 0
peripheral_modules/src/usart.c

@@ -331,6 +331,18 @@ void rs232_irq_handler(void)
 }
 
 #ifdef PORTGW_ENABLE
+uint32_t rs485_send_block(uint8_t *data, uint16_t len) {
+	uint16_t i = 0;
+
+	while (i < len) {
+		if (xQueueSend(rs485TxQ, &data[i++], 1000) != pdTRUE) {
+			return i;
+		}
+	}
+	rs485_enable_tx();
+	return i;
+}
+
 inline void rs485_enable_tx(void)
 {
     RS485_USART->CR1 |= USART_CR1_TXEIE;