Цитата(zheka @ Jan 24 2016, 17:21)

Еще одно интересное наблюдение - чем больше единиц в порт пишется, тем ближе напряжение к 3.3. вольт
То есть GPIOC->ODR=0x0001 - напряжение 1.5 вольт, GPIOC->ODR=0xFFFF - на всех выходах полноченные единицы
Описанная ситауция наблюдается на всех пинах
такое обычно бывает, когда питание отсутствует или два выходных буфера пытаются друг друга пересилить.
Сразу после подачи питания, еще до старта программы нужно убедиться, что все напряжения соответствуют.
По умолчанию нужно устанавливать все управляющие сигналы в 1. Кстати, что делает LCD_RS = 1; после LCD_CS = 0; ? Д.б. CS,RS,WD,RD = 1. После старта программы и начала инициализации убеждаемся, что это так.
Потом осцилографом убеждаемся, что прошел RESET.
По идее CS=0 должен увеличивать потребление тока устройством, это тоже можно проверить, задав точку останова в соответствующем месте.
Далее можно проверить шину, выдывая в нее попеременно 0xFFFF 0x0000 и убедиться, что сигналы с мк доходят до модуля. ,А лучше значение инкрементируемой переменной, чтобы точно убедиться в соответствии адреса при последовательной проверке сигналов шины осцилографом.
Если все в порядке, можно пробовать обмениваться через мультиплексную шину, т.е. устанавливать требуемые уровни на данных, RS,WD,RD. В принципе, этот обмен тоже можно проверить при помощи осцилографа, если синхронизироваться по CS,RS,WD,RD и смотреть состояние шины данных.
Цитата(zheka @ Jan 24 2016, 17:21)

почитайте пост внимательней, проблема уже при записи...
Обязательно бы это сделал, если бы вы не отредактировали исходное сообщение.