Sakurazuka Napisano Sierpień 15, 2011 Udostępnij Napisano Sierpień 15, 2011 Witam. Mam problem typowy dla początkującego. Otóż mam za zadanie obsłużyć wyświetlacz LCD JHD 162A za pomocą STM32 Discovery W tym celu posłużyłem się kursem programowania STM32 z tego forum. Jednak, jak łatwo się domyślić nowicjusz coś zepsuł. Jedyny efekt, jaki osiągnąłem to czarne prostokąty w jednej z 2 linii wyświetlacza. Bardzo prosiłbym o sprawdzenie kodu i jeśli to możliwe polecenie jakiejś metody rozwiązania problemu lub użytecznej literatury. porty RS, R/W i E naszego wyświetlacza podpiąłem do nóżek PA0, 1, 2 Porty DB0 - DB7 podpiąłem do nóżek PB0 - PB7 Poniżej kod, który udało mi się stworzyć... void inicjalizacja_1(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitTypeDef GPIO_RSRW; GPIO_RSRW.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; GPIO_RSRW.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_RSRW.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init(GPIOB, &GPIO_RSRW); GPIO_ResetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1); GPIO_WriteBit(GPIOB, GPIO_Pin_2, Bit_SET); // GPIO_ResetBits(GPIOB, GPIO_Pin_1); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitTypeDef GPIO_A4_7; GPIO_A4_7.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6; GPIO_A4_7.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_A4_7.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init(GPIOA, &GPIO_A4_7); GPIO_WriteBit(GPIOA, GPIO_Pin_3 | GPIO_Pin_4, Bit_SET); } void inicjalizacja_2(void) { //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitTypeDef GPIO_RSRW; GPIO_RSRW.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; GPIO_RSRW.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_RSRW.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init(GPIOB, &GPIO_RSRW); GPIO_ResetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1); //GPIO_ResetBits(GPIOB, GPIO_Pin_1); //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitTypeDef GPIO_A4_7; GPIO_A4_7.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_A4_7.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_A4_7.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init(GPIOA, &GPIO_A4_7); GPIO_ResetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5); GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET); GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET); GPIO_WriteBit(GPIOA, GPIO_Pin_5, Bit_SET); GPIO_WriteBit(GPIOA, GPIO_Pin_7, Bit_SET); GPIO_ResetBits(GPIOB, GPIO_Pin_0 | GPIO_Pin_1); GPIO_ResetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7); GPIO_WriteBit(GPIOA, GPIO_Pin_4, Bit_SET); GPIO_ResetBits(GPIOA, GPIO_Pin_4); GPIO_WriteBit(GPIOA, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7, Bit_SET); } void literka(void) { GPIO_InitTypeDef GPIO_A4_7; GPIO_A4_7.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 |GPIO_Pin_2 |GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_A4_7.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_A4_7.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init(GPIOA, &GPIO_A4_7); GPIO_WriteBit(GPIOA, GPIO_Pin_2 |GPIO_Pin_3 | GPIO_Pin_5 | GPIO_Pin_7, Bit_SET); } void Delay(volatile unsigned count) { while(count--); } W mainie: Delay(10000000); inicjalizacja_1(); Delay(10000000); inicjalizacja_1(); Delay(10000000); inicjalizacja_1(); inicjalizacja_2(); literka(); Wszystko to wrzucone w szablon TrueStudio STM32 dla tej właśnie płytki. Wiem, że pewnie popełniłem jakiś głupi, prostacki błąd. Mama nadzieję, że znajdzie się jednak ktoś, kto mi doradzi. Pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
razors Sierpień 16, 2011 Udostępnij Sierpień 16, 2011 Na dole strony masz kody źródłowe, w których jest obsługa Twojego wyświetlacza, ale z wykorzystaniem 4 bitów a nie 8 sprawdzałem i działa 1 Cytuj Link do komentarza Share on other sites More sharing options...
Sakurazuka Sierpień 16, 2011 Autor tematu Udostępnij Sierpień 16, 2011 Wielkie dzięki! Sprawdzę i poinformuję o efektach EDIT Na razie pusty ekran. Efektów brak EDIT 2 Kod jest dobry. Po poprawieniu kilku lutów wszystko pięknie działa. Dzięki za pomoc. Temat do zamknięcia Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!