Skocz do zawartości

STM32 Mostek pomiędzy uart1 a uart2.


oki188

Pomocna odpowiedź

Cześć.

Od razu mówię że jestem początkujący w STM32. Ponieważ ostatnio przez głupotę skasowałem program z procesora próbuje napisać własną wersję odpowiednika.

Program ma przekazywać dane z UART2 na UART1 i w obu kierunkach, oraz jak UART2 w międzyczasie odbierze określoną komendę na UART 2 to ma odpowiedzieć inną komendą też na UART2

tak jak na obrazku:

problem.thumb.jpg.d44a508184a678f88c10e4953837fba6.jpg

Niby nic skomplikowanego, ale mam z tym duży problem. Z pomocą paru szkiców z internetu powstał taki program.

#include "main.h"

uint8_t UART1_rxBuffer[15] = {0};
uint8_t UART2_rxBuffer[15] = {0};
UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2;
DMA_HandleTypeDef hdma_usart1_rx;
DMA_HandleTypeDef hdma_usart2_rx;
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_USART1_UART_Init(void);
static void MX_USART2_UART_Init(void);

UART_HandleTypeDef huart1;
UART_HandleTypeDef huart2;
DMA_HandleTypeDef hdma_usart1_rx;
DMA_HandleTypeDef hdma_usart1_tx;
DMA_HandleTypeDef hdma_usart2_rx;
DMA_HandleTypeDef hdma_usart2_tx;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_USART1_UART_Init(void);
static void MX_USART2_UART_Init(void);


int main(void)
{
	    HAL_Init();
	    SystemClock_Config();
	    MX_GPIO_Init();
	    MX_DMA_Init();
	    MX_USART1_UART_Init();
	    MX_USART2_UART_Init();
	    HAL_UART_Receive_DMA (&huart1, UART1_rxBuffer, 15);
	    HAL_UART_Receive_DMA (&huart2, UART2_rxBuffer, 15);
	}
	void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
	{
	    HAL_UART_Transmit(&huart2, UART1_rxBuffer, 15, 100);
	    HAL_UART_Receive_DMA(&huart1, UART1_rxBuffer, 15);

	    HAL_UART_Transmit(&huart1, UART2_rxBuffer, 15, 100);
	   	HAL_UART_Receive_DMA(&huart2, UART2_rxBuffer, 15);

  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART1_UART_Init();
  MX_USART2_UART_Init();
}

Program niby działa połowicznie ale jak teraz dodać tą funkcję  z odbiorem i nadaniem konkretnej komendy.

Może ktoś mi pomóc rozwiązać ten problem.

Z góry dziękuję.

Edytowano przez oki188
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.