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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.