[stm32 ]Reagowanie terminalu na naciśnięcie klawiszy

0

Witam.

Próbuję odpalić program UART na STM32 – odbieranie danych z kursu. Po odpaleniu programu nie ma żadnych błędów, ale po naciśnięciu klawiszy nic się na terminalu nie wyświetla. Gdzie może być problem?

Przy wysyłaniu ciągu bajtów przez UART wszystko działało.

USART_BaudRate = 115200
jest ustawione takie samo w terminalu jak w kodzie

Korzystam z tego poradnika.
http://forbot.pl/blog/artykuly/programowanie/kurs-stm32-5-komunikacja-z-komputerem-uart-id8439

Cały kod:

#include "stm32f10x.h"
#include "stm32f10x_usart.h"

#include <stdio.h>
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"


#include "stm32f10x_usart.h"


void send_char(char c)
{
	while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
	USART_SendData(USART2, c);
}

void send_string(const char* s)
{
	while (*s)
		send_char(*s++);
}

int main(void)
{
	GPIO_InitTypeDef gpio;
	USART_InitTypeDef uart;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

	GPIO_StructInit(&gpio);
	gpio.GPIO_Pin = GPIO_Pin_2;
	gpio.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_Init(GPIOA, &gpio);

	gpio.GPIO_Pin = GPIO_Pin_3;
	gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
	GPIO_Init(GPIOA, &gpio);

	USART_StructInit(&uart);
	uart.USART_BaudRate = 115200;
	
	USART_Init(USART2, &uart);

	USART_Cmd(USART2, ENABLE);

	while (1) {
		if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE)) {
		    char c = USART_ReceiveData(USART2);
		    switch (c)
		    {
		        case 'a':
		            send_string("Odebrano komunikat A!\r\n");
		            break;
		        case 'b':
		            send_string("Odebrano komunikat B!\r\n");
		            break;
		        default:
		            send_string("Nieznany komunikat:(\r\n");
		            break;
		    }
		}

	}
}

Używam stm NUCLEO F103RB.

Z góry dziękuję za pomoc.

Pozdrawiam

0

W jaki sposób konfigurujesz terminal? Głównie zwróć uwagę na ilość bitów, bitów stopu. Pokaż jak się łączysz przez ten terminal, oraz z jakiego urządzenia pośredniczącego korzystasz/

0

Już udało mi się uruchomić program, wszytko działa. Mógłby ktoś podpowiedzieć jak zmodyfikować kod, żeby po wciśnięciu np. A przez mniej niż 10 sekund był wysyłany napis A, a po wciśnięciu A przez 10 sekund był wysyłany napis A10?

1 użytkowników online, w tym zalogowanych: 0, gości: 1