Skocz do zawartości

STM32 Nucleo F103 Odbiór uart w przerwaniach


henryxxl

Pomocna odpowiedź

Witam wszystkich na tym forum;)

Aktualnie zaczynam z procesorami stm32 więc czytam i staram się zrozumieć kurs z tej strony.

Mam problem otóż odbieram wysyłam znaki z terminala PC np: 123 a w odpowiedzi otrzymuję

123Q+Gő}€%

Chcę wykonać Zadanie domowe 5.2 z poradnika

Docelowo chcę aby odbieranie stringów odbywało się w przerwaniach ale jak narazie jeszcze za słabo znam stm-y.

Oto kod:

#include "stm32f10x.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++);
}

void delay(int time)
{
   int i;
   for (i = 0; i < time * 4000; i++) {}
}

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 = 9600;
USART_Init(USART2, &uart);

USART_Cmd(USART2, ENABLE);
unsigned char bufor[5];
unsigned int  lancuch=0;
unsigned int bufor_odczytany=0;
send_string("Hello world!\r\n");


while (1) {

 if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE)) {
if (lancuch<3){
bufor [lancuch++]= USART_ReceiveData(USART2);
if (lancuch==3)
	{

	bufor_odczytany=1;
	lancuch=0;
	}
}
  }

if(bufor_odczytany)
{
send_string(bufor);
send_string("\r\n");
bufor_odczytany=0;
}


 //send_string("Hello world!\r\n");
}




}

Środowisko to System Workbench for STM32

Pozdrawiam 😉

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.