logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[STM32][UART][HAL] - Odbieranie danych o nieznanej wielkości.

12 Lis 2018 12:53 1659 10
REKLAMA
  • #1 17554337
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #2 17554371
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 17554426
    Konto nie istnieje
    Poziom 1  
  • #4 17554546
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #5 17554615
    Konto nie istnieje
    Poziom 1  
  • #6 17554695
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #7 17554709
    Konto nie istnieje
    Poziom 1  
  • #8 17554757
    Konto nie istnieje
    Poziom 1  
  • #9 17554770
    Konto nie istnieje
    Poziom 1  
  • #10 17554789
    Konto nie istnieje
    Poziom 1  
  • #11 17555036
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Na tego typu problemy jest jeden prosty sposób, wielokrotnie dyskutowany na forum: automat w przerwaniu UART. Jeśli ma być wykrywana "przerwa w transmisji" najpierw trzeba zdefiniować, co to jest ta "przerwa". Jeśli "przerwa" - to brak nowych danych przez czas np. potrzebny na transmisję jednego bajtu - UART potrafi takie coś wykryć w sprzęcie. Jeśli "przerwa" to np. jedna sekunda, to w automacie trzeba nastawiać timer programowy i np. przy kolejnym przerwaniu UART sprawdzać jego stan, a w przerwaniu timera realizującym ten timer programowy - wywoływać obsługę zdarzenia końca porcji danych.

Podsumowanie tematu

✨ Użytkownik stara się odbierać dane o zmiennej długości za pomocą USART w mikrokontrolerze STM32F411VET6, jednak napotyka problemy z funkcjami HAL_USART_Receive_IT() oraz HAL_UART_RxCpltCallback, które wywołują się dopiero po odebraniu określonej liczby znaków. W odpowiedziach sugerowane są różne podejścia, takie jak odbieranie danych po pojedynczych znakach, użycie bufora kołowego oraz detekcja przerwy w transmisji, co może pomóc w rozpoznawaniu końca przesyłania danych. Wskazówki dotyczą również poprawności użycia funkcji sprintf oraz konieczności zrozumienia podstaw języka C.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA