Hallo. Ich möchte ein LCD mit dem STM323 VL Discovery ansteuern.
1 | #define RS GPIO_Pin_7
|
2 | #define RW GPIO_Pin_6
|
3 | #define DB7 GPIO_Pin_9
|
4 | #define DB6 GPIO_Pin_5
|
5 | #define DB5 GPIO_Pin_4
|
6 | #define DB4 GPIO_Pin_3
|
7 | #define DB3 GPIO_Pin_2
|
8 | #define DB2 GPIO_Pin_1
|
9 | #define DB1 GPIO_Pin_0
|
10 | #define DB0 GPIO_Pin_13
|
11 |
|
12 | void LCDPin_InitConf(void)
|
13 | {
|
14 | /* ************ Initialisierung/Konfiguration ***************** */
|
15 | GPIO_InitTypeDef GPIO_InitStructure;
|
16 | GPIO_InitStructure.GPIO_Pin = RS | RW | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0;
|
17 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
18 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // Push-Pull Output
|
19 | GPIO_Init(GPIOC, &GPIO_InitStructure);
|
20 | }
|
21 |
|
22 | void LCD_Initial(void)
|
23 | {
|
24 | GPIO_WriteBit(GPIOC, DB5 | DB4 | DB3, Bit_SET);
|
25 | delay();
|
26 | GPIO_WriteBit(GPIOC, DB5 | DB4 | DB3, Bit_RESET);
|
27 | delay();
|
28 | GPIO_WriteBit(GPIOC, DB3 | DB2 | DB1, Bit_SET);
|
29 | delay();
|
30 | GPIO_WriteBit(GPIOC, DB3 | DB2 | DB1, Bit_RESET);
|
31 | delay();
|
32 | GPIO_WriteBit(GPIOC, DB2 | DB1, Bit_SET);
|
33 | delay();
|
34 | GPIO_WriteBit(GPIOC, DB2 | DB1, Bit_RESET);
|
35 | delay();
|
36 | GPIO_WriteBit(GPIOC, RS | DB6 | DB4 | DB2 | DB1 | DB0, Bit_SET);
|
37 | }
|
38 |
|
39 | /* ************** Hilfsfunktionen ************************* */
|
40 | void delay(void)
|
41 | {
|
42 | int i;
|
43 | for (i=0;i<500;i++)
|
44 | {}
|
45 | }
|
46 |
|
47 | int main()
|
48 | {
|
49 | while(1) // Do not exit
|
50 | {
|
51 | LCDPin_InitConf();
|
52 | delay();
|
53 | LCD_Initial();
|
54 | }
|
55 | }
|
Dazu habe ich zwei Funktionen geschrieben und zum Testen erstmal LEDs an
die Ausgänge gelegt, um im Debug-Modus erkennen zu können, ob an den
Ausgängen etwas geschaltet wird, jedoch kommt da leider nix an. Kann mir
jemand nen Tipp geben, wo mein Fehler liegt? Vielen Dank, MfG Heiko