[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/artykul[...]acja-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, botów: 0