Es geht immer um die Polarität in der Matrix relativ zueinander. Ein COM
ist mit mehreren Segmenten verbunden und ein Segment mit mehreren
COM-Anschlüssen.
Toggelst du den Segmentpin und läßt den COM so wie er ist, so hat man
die Hälfte der Zeit ein Signal auf dem Segent bei dem das Jeweilge
COM-Signal die PIN-Leitung "kreuzt". Es "leuchtet" ein wenig. Toggelt
man nur den COM, läßt aber den Segment-Pin so wie er ist, so hat man das
Gleiche.
Der eigentliche Betriebsmodus sieht aber anders aus. Da werden immer COM
und Pin gleichzeitig getoggelt. Haben dabei beide immer den gleichen
Pegel, so ist das Segment aus. Haben beide immer gegensätzliche Pegel,
so ist das Segment an. Das klingt unnötig kopliziert, und es ginge auch
ohne zu toggeln nur mit Gleichspannung, allerdings mögen die die LCDs
keine Gleichspannung. Sie zersetzen sich unter Gleichspannung mit der
Zeit. Darum wird die Polarität immer gewechselt, so daß man im Idealfall
eine Art Wechselspannung ohne Gleichspannungsanteil hat.
Um nun mehrere COM nutzen zu können wird in der Regel ein
Zeitmultiplexverfahren verwendet. Das klingt kompliziert, ist aber nicht
so schlimm wie es klingt. Da bleibt fast alles wie gehabt, nur daß die
Signale zeitlich verschachtelt werden. Im ersten Intervall werden die
Signale für die erste Pingruppe und COM1 angelegt. Danach werden die
Signale für die zweite Gruppe und COM2 angelegt und COM1 wird auf
neutral geschaltet und so weiter. Genau genommen ist immer nur ein COM
aktiv und die anderen sind neutral. Ist der Zyklus durchlaufen, so
beginnt es von Neuem, aber mit invertierten Pegeln.
Die genaue Belegung und wie das "neutral" realisiert wird etc., hängt
vom Display und dem verwendeten Controller ab. STM32 ist aber aktuell
nicht meine Welt. Aber Dir sollte nun inzwischen das Grundprinzip klar
sein und warum es bei Dir nicht funktioniert.