[STM32F042K6]Zmiana VCP z USART2 na USART1

Wszystko o naszych nuklejkach od STM
ODPOWIEDZ
ps19
Użytkownik
Posty: 10
Rejestracja: 16 paź 2017, 21:42
Lokalizacja: Opole

[STM32F042K6]Zmiana VCP z USART2 na USART1

Post autor: ps19 » 29 sie 2018, 20:08

Witajcie,

Chciałem przerobić Nucleo-32 z prockiem STM32F042k6. Zmienić domyślny port VCP_TX z portu PA2 (USART2) na port PA9 (USART1).

Rozlutowałem zworkę SB2 i połączyłem PA9(TXD) do pinu SB2 od strony USB (RXD od "przejściówki" USART->USB)

Pod fabrycznym podłączeniem całość działała bez zarzutu.Teraz brak nadawania.

Konfiguracja USART2:
  1. void USART_Config(void)
  2. {
  3.         RCC->AHBENR |= RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOFEN; //Enable GPIOA, GPIOB, GPIOF
  4.     RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
  5.  
  6.     GPIOA->MODER |= (GPIO_MODER_OUTPUT << (2*9)); //GPIO as output
  7.     GPIOA->AFR[1] = (1 << 4*1); //AF1 (Alternate function) - PA9 - USART1
  8.  
  9.     USART1->BRR = SystemCoreClock/2/115200; //SystemCoreClock == CPU_FREQ
  10.     USART1->CR1 = USART_CR1_TE | USART_CR1_UE; //Enable transmitting and USART
  11. }

Awatar użytkownika
SunRiver
Administrator
Posty: 513
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: [STM32F042K6]Zmiana VCP z USART2 na USART1

Post autor: SunRiver » 29 sie 2018, 20:20

to dziwne że ci nie działą , jednak to pewnie wina kondfiguracji
  1.  
  2. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  3. RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART1, ENABLE);
  4.  
linia wejściowa TX powinna byc w trybie PP zaś RX jako Floating
  1.  
  2. GPIO_InitTypeDef gpio;
  3.  
  4. GPIO_StructInit(&gpio);
  5. gpio.GPIO_Pin = GPIO_Pin_9;
  6. gpio.GPIO_Mode = GPIO_Mode_AF_PP;
  7. GPIO_Init(GPIOA, &gpio);
  8.  
  9. gpio.GPIO_Pin = GPIO_Pin_8;
  10. gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  11. GPIO_Init(GPIOA, &gpio);
  12.  

potem już z górki
  1.  
  2. USART_InitTypeDef uart;
  3.  
  4. USART_StructInit(&uart);
  5. uart.USART_BaudRate = 9600;
  6. USART_Init(USART1, &uart);
  7.  
  8. USART_Cmd(USART1, ENABLE);
.... z każdym bitem serca ....
💫SunDUINO
💦Google+
💦Kanał Youtube
💦Sotton

ps19
Użytkownik
Posty: 10
Rejestracja: 16 paź 2017, 21:42
Lokalizacja: Opole

Re: [STM32F042K6]Zmiana VCP z USART2 na USART1

Post autor: ps19 » 29 sie 2018, 20:45

Wygląda na to samo, Tylko że włączam USART1 zamiast USART2.

Awatar użytkownika
SunRiver
Administrator
Posty: 513
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: [STM32F042K6]Zmiana VCP z USART2 na USART1

Post autor: SunRiver » 29 sie 2018, 21:37

sorki literówka ...
sprawdzałem na SUN-051 działą nieważne na którym usarcie
.... z każdym bitem serca ....
💫SunDUINO
💦Google+
💦Kanał Youtube
💦Sotton

ps19
Użytkownik
Posty: 10
Rejestracja: 16 paź 2017, 21:42
Lokalizacja: Opole

Re: [STM32F042K6]Zmiana VCP z USART2 na USART1

Post autor: ps19 » 29 sie 2018, 23:21

Problem rozwiązany - port PA9 ma być ustawiony jako alternatywny, a nie jako wyjście - ma być GPIO_MODE_ALTERNATE zamiast GPIO_MODE_OUTPUT.
Musiałem to gdzieś przypadkowo zmienić i dlatego nie działało.

Awatar użytkownika
SunRiver
Administrator
Posty: 513
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: [STM32F042K6]Zmiana VCP z USART2 na USART1

Post autor: SunRiver » 30 sie 2018, 11:46

nie zauważyłem u ciebie w kodzie zaś u mnie widać :

  1.  
  2. gpio.GPIO_Mode = GPIO_Mode_AF_PP;
  3.  
.... z każdym bitem serca ....
💫SunDUINO
💦Google+
💦Kanał Youtube
💦Sotton

ODPOWIEDZ