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

Komunikacja Uart pomiędzy stm32f407 discovery stm32l476rg [cortex m4] [eclipse]

09 Gru 2017 17:46 690 12
REKLAMA
  • #1 16879077
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #2 16879118
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #3 16879123
    Konto nie istnieje
    Konto nie istnieje  
  • #4 16879184
    Konto nie istnieje
    Konto nie istnieje  
  • #5 16879194
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #6 16879198
    Konto nie istnieje
    Konto nie istnieje  
  • #7 16879212
    Konto nie istnieje
    Konto nie istnieje  
  • #8 16879213
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #9 16879221
    Konto nie istnieje
    Konto nie istnieje  
  • #10 16879235
    Konto nie istnieje
    Konto nie istnieje  
  • #11 16880529
    Konto nie istnieje
    Konto nie istnieje  
  • #12 16883260
    el2010tmp
    Poziom 25  
    Posty: 713
    Pomógł: 97
    Ocena: 44
    @Piotrus_999 Zamiast dywagować przez kilka postów wystarczy po prostu pomóc.
    Każdy kiedyś popełniał takie błędy.

    To jest definicja funkcji HAL_UART_TxCpltCallback:
    kubami napisał:
    void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
    {
    HAL_UART_Transmit_IT(&huart1, dataT, 1);
    }

    A to jej wywołanie:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Definiowanie funkcji wewnątrz pętli while(1) jest bez sensu. Argument dataT również jest źle przekazywany.
    Po prostu w pętli while(1) wystarczy wstawić:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #13 16883282
    grko
    Poziom 33  
    Posty: 1386
    Pomógł: 247
    Ocena: 141
    @el2010tmp Jak mogłeś tak szybko podać rozwiązanie tego problemu! Teraz biedny autor tematu nie będzie mógł zostać łaskawie oświecony po 10 kolejnych bezsensownych postach.

    Zeby nie było OT to dodam jeszcze, że HAL_UART_Transmit_IT jest funkcją asynchroniczną i po jej wykonaniu nie ma pewności, że to co zostało zlecone zostało wytransmitowane. Ponadto HAL_UART_Transmit_IT zwraca wartość i warto ją sprawdzać.

Podsumowanie tematu

✨ Użytkownik poszukuje pomocy w komunikacji UART pomiędzy dwoma mikrokontrolerami STM32F407 i STM32L476RG. Przedstawiony kod zawiera błędy, takie jak definiowanie funkcji wewnątrz pętli while(1) oraz niewłaściwe przekazywanie argumentów. Użytkownicy sugerują, że kod nie działa, ponieważ nie rozumie podstaw języka C oraz interfejsu UART. Zwracają uwagę na konieczność nauki podstaw programowania oraz różnicy między bitem a bajtem. Proponują poprawki do kodu, w tym przeniesienie wywołania funkcji HAL_UART_Transmit_IT poza pętlę while oraz sprawdzanie wartości zwracanej przez tę funkcję.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA