Skocz do zawartości
romkli

Obsługa wyświetlacza ST7565 i STM32F1

Pomocna odpowiedź

Czy ma ktoś działającą bibliotekę do obsługi wyświetlacza ST7565 działającą pod STM32F103 lub podobnym?

 

Udostępnij ten post


Link to post
Share on other sites

Dzięki za podpowiedź. Sprawdziłem i mam pewien problem. Otóż :

inline void ST7565_spiwrite(uint8_t c) {
  //shiftOut(sid, sclk, MSBFIRST, c);
  while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET);
  SPI_SendData(SPI1, c);
}

mam w trzeciej i czwartej linii błąd.

D:\WorkPlace\STM32\TrueStudio\ST7565_STM32F1_20190124\Debug/..\Src/ST7565.c:396: undefined reference to `SPI_GetFlagStatus'
D:\WorkPlace\STM32\TrueStudio\ST7565_STM32F1_20190124\Debug/..\Src/ST7565.c:397: undefined reference to `SPI_SendData'

Prawdopodobnie brakuje mi pliku stm32f1xx_spi.h, ale jak dodam w include, nie znajduje jego. Przypomnę że pracuję w TrueStudio oraz STM32CubeMX.

Udostępnij ten post


Link to post
Share on other sites
2 godziny temu, romkli napisał:

Prawdopodobnie brakuje mi pliku stm32f1xx_spi.h, ale jak dodam w include, nie znajduje jego. Przypomnę że pracuję w TrueStudio oraz STM32CubeMX.

Cytowany przez Ciebie fragment bazuje na funkcjach z StdPeriph, musisz sobie przepisać ten fragment na wersję korzystającą z HAL.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
12 godzin temu, romkli napisał:

Dzięki za podpowiedź. Sprawdziłem i mam pewien problem. Otóż :


inline void ST7565_spiwrite(uint8_t c) {
  //shiftOut(sid, sclk, MSBFIRST, c);
  while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET);
  SPI_SendData(SPI1, c);
}

mam w trzeciej i czwartej linii błąd.

D:\WorkPlace\STM32\TrueStudio\ST7565_STM32F1_20190124\Debug/..\Src/ST7565.c:396: undefined reference to `SPI_GetFlagStatus'
D:\WorkPlace\STM32\TrueStudio\ST7565_STM32F1_20190124\Debug/..\Src/ST7565.c:397: undefined reference to `SPI_SendData'

Prawdopodobnie brakuje mi pliku stm32f1xx_spi.h, ale jak dodam w include, nie znajduje jego. Przypomnę że pracuję w TrueStudio oraz STM32CubeMX.

Cześć,

dobrze myślisz, prawdopodobnie brakuje include do pliku nagłówkowego .h do obsługi SPI. Jest on w katalogu projektu:

https://github.com/mberntsen/STM32-Libraries/tree/master/STM32F10x_StdPeriph_Driver/inc

Musisz odpowiednio podać ścieżkę do pliku nagłówkowego w instrukcji include:

#include "../../STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h"

Oczywiści musisz mieć cały projekt z Github'a skopiowany lokalnie (źródła). Tak jak napisał Treker ten projekt korzysta z biblioteki "Standard Peripheral" a nie HAL. Jeśli koniecznie musisz mieć HAL, to musisz poszukać projektu opartego na bibliotece HAL, lub "ręcznie" to oprogramować korzystając z dokumentacji do tej biblioteki.

Pozdrawiam

Edytowano przez FlyingDutch
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Obawiam się że dodanie pliku nagłówkowego nie wystarczy. Błąd "undefined reference" pochodzi od linkera i oznacza, że nie znalazł on wymaganych funkcji. Dodanie nagłówka jedynie poinformuje kompilator o nazwach oraz parametrach, ale nie rozwiąże podstawowego problemu - że funkcji SPI_GetFlagStatus oraz SPI_SendData po prostu brakuje.

Trzeba więc je napisać, albo zmienić kod biblioteki wyświetlacza tak, aby działał z używaną biblioteką, czyli HAL.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...