Skocz do zawartości

juras

Użytkownicy
  • Zawartość

    15
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O juras

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Witam forumowiczów. Na podstawie kursu STM32 F4 na stronie Forbota staram się napisać program do wykorzystania ADC i DMA do pomiaru napięć. Pomiar napięć bez wykorzystania DMA potrafię wykonać bez problemu, jednak gdy chcę uruchomić DMA, obserwując w STM studio nie otrzymuję żadnych wartości z pomiaru - wartość zmiennej ciągle są równe 0. Dodam też, że okno konfiguracyjne ADC w programie CUBE posiada mniej opcji niż w przypadku konfiguracji procesora F4 wykorzystanego w kursie. Zasadniczą (moim zdaniem) różnicą jest brak opcji "DMA continuous request". Tak wygląda okno konfiguracji ADC w CU
  2. Cześć, Próbuję wykorzystać filtry CAN w trybie ID List mode. Nie mam problemów z zaprogramowaniem ich w trybie Mask mode. Tak wygląda wykorzystany już przeze mnie kod do konfiguracji w trybie Mask mode: sFilterConfig.BankNumber = 0; sFilterConfig.FilterNumber = 0; sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; sFilterConfig.FilterIdHigh = 0x10<<5; sFilterConfig.FilterIdLow = 0; sFilterConfig.FilterMaskIdHigh = 0xff<<5; sFilterConfig.FilterMaskIdLow = 0; sFilterConfig.FilterFIFOAssignment = 0; sFilterConf
  3. Witam! Borykam się z pewnym problemem. Wysyłanie i odbiór przez UART wartości 8-bitowych udało mi się zrealizować bez większych problemów. Jednak gdy chciałem zrealizować wysyłanie wartości 16-bitowych, najpierw wysyłając starsze 8 bitów, później młodsze i następnie łącząc je w całość, miałem problemy z odbiorem. Nie zależy mi na wysyłaniu liter, jedynie wartości heksadecymalne, ponieważ chcę wykorzystać opracowaną na własne potrzeby ramkę danych. Próbowałem wykorzystać sposób z funkcjami printf z lekcji UART z kursu STM32F4, również nie osiągnąłem odpowiedniego rezultatu. Do odbioru i wy
  4. Witam! Za pomocą bibliotek HAL udało mi się zrealizować komunikację miedzy węzłami za pomocą CAN. Chciałem wysłać ramkę żądania transmisji (remote control frame) i wywołać tym wysłanie danych przez drugi węzeł. Do tego celu w strukturze odpowiadającej za CAN w węźle wysyłającym zapytanie ustawiłem CAN_RTR_REMOTE; , jednak nic to nie dało. Przeszukiwałem dokumentację do bibliotek HAL i nie znalazłem specjalnej funkcji do odbioru lub wysyłania ramek żądania. Szukałem odpowiedzi w internecie i nie znalazłem odpowiedzi. Czy ktoś z Was jest w stanie pomóc rozwiązać ten problem? Z góry dziękuj
  5. Znalazłem rozwiązanie problemu, może się komuś przyda. Należało samemu dodać do kodu linijkę aktywującą przerwanie przy odbiorze ramki, w tym celu dopisałem w funkcji main kod: HAL_NVIC_EnableIRQ(CAN1_RX0_IRQn); i podziałało. Zauważyłem tu, że Cube przy generowaniu kodu może nie aktywować wszystkich przerwań, mimo że były wybierane przeze mnie z poziomu Cube. Nie wiem czy jest to mankament programu, czy po prostu tak powinno być. W każdym razie, temat do zamknięcia.
  6. Czy jest możliwe w ogóle wyłączenie filtrowania, aby sprawdzić czy cokolwiek jest wysyłane? Zmieniłem wartość parametru FilterActivation na DISABLE, jednak to nie podziałało. Czy jest inna metoda?
  7. Co do poprawności ustawień filtrów nie miałem pewności i szukając odpowiedzi w internecie doszedłem do wniosku, że powinienem wykorzystać do filtrowania tryb maskowania i użyłem CAN_FILTERMODE_IDMASK zamiast CAN_FILTERMODE_IDLIST, niestety nic to nie dało. Niestety nie mam teraz dostępu do żadnego oscyloskopu ani analizatora stanów logicznych.
  8. Kolejno LED_G_Pin i LED_G_GPIO_Port są to GPIO_PIN_5 i GPIOA. Są to dodane etykiety z poziomu Cube'a do wyprowadzenia zielonej diody LED na płytce Nucleo. Schemat połączeń: __________ Komentarz dodany przez: Sabre
  9. Witam. Próbowałem uruchomić interfejs CAN, ale jednego problemu nie mogę obejść. Na początku chciałem tylko aby pomiędzy dwoma jednakowymi płytkami Nucleo przesyłać dane. Kod konfiguracyjny wygenerowałem w środowisku Cube. Kod z pliku main.c: #include "main.h" #include "stm32f1xx_hal.h" /* USER CODE BEGIN Includes */ #include "stm32f1xx_it.h" /* USER CODE END Includes */ /* Private variables ---------------------------------------------------------*/ CAN_HandleTypeDef hcan; /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ uint8_t x
  10. Cześć, mam problem podobny do paru poprzedników z tematu. Realizując zadanie dodatkowe napisałem kod, który powinien realizować zapalanie i gaszenie kolejnych diod przy wciskaniu przycisku. Co prawda diody się zapalają i gaszą po kolei, jednak przez drgania styków jest to ciężko zauważalne, tzn. na każde wciśnięcie przycisku przez drgania diody zapalają się i gaszą wiele razy, zupełnie inaczej niż na zamieszonym do kursu filmiku. Początkowo myślałem, że to wina kodu jednak jest on analogiczny do kodu zamieszczonego w pliku z zadaniem domowym. Aby mieć pewność, że wina nie leży po stronie kodu
  11. Niestety nic to nie dało. Próbowałem też z odsyłaniem pojedynczego znaku z pomocą funkcji "wyslij_znak", również bez rezultatu. Edit: W wolnym czasie poszukałem trochę na necie i dzięki znalezionym informacjom znalazłem rozwiązanie. Dodałem komendy: GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2); GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2); Temat do zamknięcia.
  12. Witam, próbowałem przećwiczyć moduł USART na zestawie NUCLEO F411RE. O ile wysyłanie ciągu bitów przebiegało bezproblemowo, napotkałem problem z odbieraniem czegokolwiek z terminala. Napisałem prosty program bazując na kursie STM z Forbota do wysyłania i odbierania danych i podczas próby wysłania odpowiednich znaków ("a","b",lub "c") nie otrzymuję oczekiwanej odpowiedzi. Sprawdziłem w karcie katalogowej czy skonfigurowałem odpowiedni bity do odbioru i to się zgadza. Czy ktoś móglby podpowiedzieć mi, lub naprowadzić mnie w czym może znajdować się problem? W załączniku zamieszczam kod programu i
  13. dzięki wielkie, wszystko działa jak powinno
  14. Witam Forumowiczów! Postanowiłem w wolnym czasie przerobić kurs STM32. Korzystałem ze wskazówek kursu na stronie Forbota i natknąłem się na pewien problem, gdy chciałem skonfigurować przerwanie zewnętrzne. Aby uruchomić moduł wejść alternatywnych, należy użyć "RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);". Kurs był pisany pod NUCLEO--F103RB, ja posiadam NUCLEO-F411RE, więc przejrzałem kartę katalogowa, i doczytałem się, że EXTI znajduje się również na szynie APB2, jednak program nie widzi argumentu "RCC_APB2Periph_AFIO". Gdy przeglądałem zawartość biblioteki, nie znalazłem niczego, co
  15. Witam Forumowiczów! Mam pytanie co do kursu. Jeden z użytkowników wspomniał, że używa płytki NUCLEO-F411RE. Również taką na dniach zamówiłem. Pierwszy program ze zmiennymi (z 3 lekcji kursu) skompilował się i działał poprawnie, jednak przy konfiguracji portów wystąpiły problemy. Początkowo przepisywałem ręcznie aby lepiej zrozumieć kod, jednak gdy wystąpiły pierwsze błędy, to skopiowałem kod i zmieniłem jedynie nazwę używanych bibliotek tak aby pasowały do używanej przeze mnie płytki, tzn stm32f4xx.h. Rozumiem, że biblioteki mogą się trochę różnić i przez to nie pasują niektóre wartości funkc
×
×
  • 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.