Skocz do zawartości

romkli

Użytkownicy
  • Zawartość

    14
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O romkli

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    GY
  1. 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.
  2. Czy ma ktoś działającą bibliotekę do obsługi wyświetlacza ST7565 działającą pod STM32F103 lub podobnym?
  3. Przerabiam bibliotekę do ST7565 (wyświetlacz mono) z AVR na STM32 i nie mogę znależć biblioteki pgmspace.h, pracujęca z STM32. Gdzie mogę znależć tą biblioteke? Romkli
  4. Drogi Elvisie. Przypomnę, bo tego nie wiesz. Miałem już napisaną poprawnie działającą funkcję wysyłania liczny przez UART, było to gdzieś rok temu. Nie zrobiłem jej kopii a latem padł mi dysk i wszystkie moje dane straciłem. Jak napisałem, że przypomniało mi się to znaczyło, że naprowadziłeś mnie na poprawną drogę i napisałem ją na nowo. Wszystko działa. Fajna teoria. Dzięki, jesteś zajefajny. Pójdź do kabaretu.
  5. W pierwszym przypadku mam nieokreśloną liczbę w zmienne s, zaś drugim przypadku mamy określoną liczbę. Przypomniało mi się. Poprawiłem funkcje na: void send_integer(uint8_t n){ char s[4]; itoa ( n, s, 10 ); send_string( s ); } Teraz wszystko działa ja miało działać. Dzięki za podsunięcie dobrego kierunku.
  6. Witam serdecznie. Jestem początkującym w STM. Właśnie przechodzę z AVR. Chcę wysłać przez UART liczbę a dokładnie przekonwertować ją na stringa poleceniem itoa. Rok temu już to zrobiłem, ale w między czasie padł mi dysk i wszystko straciłem. Zrobiłem funkcję: void send_integer(uint8_t n){ char *s; itoa ( n, s, 10 ); send_string(s); } ale podczas kompilacji wywala mi błąd ..\Src\main.c:308:12: warning: 's' is used uninitialized in this function [-Wuninitialized] itoa ( n, *s, 10 );
  7. Witam ponownie. Zastanawia mnie ten program while (1) { eeprom_read(0x10, &counter, sizeof(counter)); send_string( "Uruchomenie numer " ); send_int( counter ); send_string( "\r\n" ); counter++; eeprom_write(0x10, &counter, sizeof(counter)); delay( 1000 ); Choć program pracije dobrze, bo oblicza w pętli ilość uruchomień. Zapisuje tą ilość do pamięci, odczytuje ją z pamięci, tylko my operujemy na zmiennej COUNTER i nie wyświetla nam faktycznej liczby odczytanej z pamięci. Jeśli chcielibyśmy odczytać ją to w we funkcji eeprom_read(0x10, &counter, sizeof(counter));. send_string( "Uruchomenie numer " ); for( i = 0; i < size - 1; i++ ) { while( I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED ) != SUCCESS ); buffer[ i ] = I2C_ReceiveData( I2C1 ); send_int( buffer[ i ]); } send_string( "\r\n" ); Myślę, że tak powinno wyglądać albo w pętli zmniejszającej. Jutro to sprawdzę i potwierdzę.
  8. OK. Już rozwiązałem mój problem. W mam zawaloną głowę, więc myślę z pewnym ograniczeniem. [ Dodano: 25-04-2018, 12:35 ] Teraz mam inne pytanie. Piszę dwie biblioteki usart i i2c. W nich również dopisuję kondigurację i tu mam problem. W jednej dopisuję: ... GPIO_InitTypeDef gpio; I2C_InitTypeDef i2c; ... gpio.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; // SCL, SDA gpio.GPIO_Mode = GPIO_Mode_AF_OD; gpio.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &gpio); I2C_StructInit(&i2c); i2c.I2C_Mode = I2C_Mode_I2C; i2c.I2C_ClockSpeed = 100000; I2C_Init(I2C1, &i2c); I2C_Cmd(I2C1, ENABLE); ... w drugiej: ... GPIO_InitTypeDef gpio; USART_InitTypeDef uart; ... GPIO_StructInit(&gpio); gpio.GPIO_Pin = GPIO_Pin_2; gpio.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &gpio); gpio.GPIO_Pin = GPIO_Pin_3; gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &gpio); USART_StructInit(&uart); uart.USART_BaudRate = 115200; USART_Init(USART2, &uart); USART_Cmd(USART2, ENABLE); ... i tu mam problem, bo program nie startuje. Jak zmienię i całą konfiguracje mam w main ... GPIO_InitTypeDef gpio; I2C_InitTypeDef i2c; USART_InitTypeDef uart ... GPIO_StructInit(&gpio); gpio.GPIO_Pin = GPIO_Pin_2; gpio.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &gpio); gpio.GPIO_Pin = GPIO_Pin_3; gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &gpio); USART_StructInit(&uart); uart.USART_BaudRate = 115200; USART_Init(USART2, &uart); USART_Cmd(USART2, ENABLE); gpio.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; // SCL, SDA gpio.GPIO_Mode = GPIO_Mode_AF_OD; gpio.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &gpio); I2C_StructInit(&i2c); i2c.I2C_Mode = I2C_Mode_I2C; i2c.I2C_ClockSpeed = 100000; I2C_Init(I2C1, &i2c); I2C_Cmd(I2C1, ENABLE); ... wszystko jest ok. [ Dodano: 25-04-2018, 20:30 ] Kolejny problem rozwiazany.
  9. Witam. Właśnie przesiadłem się a AVR na STM. Doszedłem do tej lekcji i wszystko działa ok, tylko chciałbym by program rejestrował nie ilość uruchomień, tylko działał w pętli głównej programu i co 1 sekundę zapisywał i odczytywał counter. pętla główna programu wyglądałaby tak: while (1) { eeprom_read(0x10, &counter, sizeof(counter)); printf("Uruchomenie numer %ld\n", counter); counter++; eeprom_write(0x10, &counter, sizeof(counter)); delay( 1000 ); } I tu zong!!!, nic nie działa, ani usart nic nie wysyła, ani i2c nic nie odczytuje i zapisuje w pamięci. [ Dodano: 25-04-2018, 10:49 ] Ok. Wszystko działa. Musiałem wcześniej jakiś czeski błąd zrobić. Sorry
  10. Piszé wlasná biblioteke do moich projektow i z tym zwiazanym mam pytanie: Czy w preprocesorze mogé porównac z wartoscia zniennej. Moze to brzmi nie zrozumiale, ale daje przyklad: ... a = 5; ... #define PIN a ... #if PIN == 1 ... #endif #if PIN == 5 ... #endif ... Wiem, ze powinno to byc: ... #define PIN 5 ... #if PIN == 1 ... #endif #if PIN == 5 ... #endif ... Nigdzie nie moge znalezc w rozwiazaniu mojego problemu
  11. I jak to niewiele do szczęścia potrzeba. Dzięki za podpowiedż. Myślę, że dam radę, tylko żeby porządek był w bibliotekach i powinno byś OK!
  12. Witam serdecznie. Mam pytanie odnośnie napisania biblioteki wspólnej do wszystkich swoich projektów. Założenie: napisać bibliotekę nie pod dane urządzenie, lecz wspomagająca działanie. Gdyby biblioteka była od urządzenia, byłoby możliwe importować ją do projektu. Ja myślę bardziej o bibliotece, zwspomagająca działanie i dopisywanie nowych funkcji. W takiej sytuacji byłoby ciężko lub byłoby niemożliwe importowanie z zachowaniem czy aby wersja tej biblioteki byłaby najnowsza. Wtedy możnaby do nowego projektu dopisać #include (ze ścieżką dostępu do pliku biblioteki).
×
×
  • Utwórz nowe...