Перейти к содержанию

Stm32+Hd44780 Не Получается Изменить Порт На Котором Сидит Жк


ƝlƝ†EƝDO

Рекомендуемые сообщения

Здраствуйте. Собрал проект из статьи http://cxem.net/mc/mc263.php , все работает, но при потытке сменить порт на котором сидит дисплей почему то не работает.

Изменял следующие строки

GPIOB->ODR на GPIOС->ODR

//---Переопределяем порты для подключения дисплея, для удобства---//
#define	 LCM_OUT			 GPIOB->ODR
#define	 LCM_PIN_RS		 GPIO_Pin_0		 // PB0
#define	 LCM_PIN_EN		 GPIO_Pin_1		 // PB1
#define	 LCM_PIN_D7		 GPIO_Pin_7		 // PB7
#define	 LCM_PIN_D6		 GPIO_Pin_6		 // PB6
#define	 LCM_PIN_D5		 GPIO_Pin_5		 // PB5
#define	 LCM_PIN_D4		 GPIO_Pin_4		 // PB4
#define	 LCM_PIN_MASK ((LCM_PIN_RS | LCM_PIN_EN | LCM_PIN_D7 | LCM_PIN_D6 | LCM_PIN_D5 | LCM_PIN_D4))
GPIO_InitTypeDef GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); на RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOС, ENABLE);

GPIO_Init(GPIOB, &GPIO_InitStructure); на GPIO_Init(GPIOС, &GPIO_InitStructure);

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0 | GPIO_Pin_1| GPIO_Pin_4 | GPIO_Pin_5| GPIO_Pin_6| GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);

В чем может быть причина?

Изменено пользователем ƝlƝ†EƝDO
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Какая плата используется? Может на этих ногах уже что-то висит из периферии (как минимум подтяжка).

Если прошивка не большая (и не страшно ее показать остальным :) ) выложите, так будет немного понятнее. Может ошибка где то в другом месте?...

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Проблему решил, там у автора почему то нужно соблюдать последавательность ног на дате. Плату на 407ом использую. Прошивка точно такаяже как и по ссылке.

Просто взял другой порт со свободными пинами как здесь.

#define LCM_PIN_D7			 GPIO_Pin_7			 // PB7
#define LCM_PIN_D6			 GPIO_Pin_6			 // PB6
#define LCM_PIN_D5			 GPIO_Pin_5			 // PB5
#define LCM_PIN_D4			 GPIO_Pin_4			 // PB4

Изменено пользователем ƝlƝ†EƝDO
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Добрый вечер уважаемые! И я столкнулся с той же проблемой.......... дисплей ни в какую не хочет инициализироваться...

вот код:

//---Переопределяем порты для подключения дисплея, для удобства---//
#define	 LCM_OUT			   GPIOA->ODR
#define	 LCM_PIN_RS		    GPIO_Pin_0		  // PB0
#define	 LCM_PIN_EN		    GPIO_Pin_1		  // PB1
#define	 LCM_PIN_D7		    GPIO_Pin_7		  // PB7
#define	 LCM_PIN_D6		    GPIO_Pin_6		  // PB6
#define	 LCM_PIN_D5		    GPIO_Pin_5		  // PB5
#define	 LCM_PIN_D4		    GPIO_Pin_4		  // PB4
#define	 LCM_PIN_MASK  ((LCM_PIN_RS | LCM_PIN_EN | LCM_PIN_D7 | LCM_PIN_D6 | LCM_PIN_D5 | LCM_PIN_D4))
GPIO_InitTypeDef  GPIO_InitStructure;
//---Функция задержки---//
void delay(int a)
{
   int i = 0;
   int f = 0;
   while(f<a)
   {
    while(i<60)
	 {i++;}
    f++;
   }
}
//---Нужная функция для работы с дисплее, по сути дергаем ножкой EN---//
void PulseLCD()
{
   LCM_OUT &= ~LCM_PIN_EN;
   delay(220);
   LCM_OUT |= LCM_PIN_EN;
   delay(220);
   LCM_OUT &= (~LCM_PIN_EN);
   delay(220);
}
//---Отсылка байта в дисплей---//
void SendByte(char ByteToSend, int IsData)
{
   LCM_OUT &= (~LCM_PIN_MASK);
   LCM_OUT |= (ByteToSend & 0xF0);
   if (IsData == 1)
    LCM_OUT |= LCM_PIN_RS;
   else
    LCM_OUT &= ~LCM_PIN_RS;
   PulseLCD();
   PulseLCD();
   LCM_OUT &= (~LCM_PIN_MASK);
   LCM_OUT |= ((ByteToSend & 0x0F) << 4);
   if (IsData == 1)
    LCM_OUT |= LCM_PIN_RS;
   else
    LCM_OUT &= ~LCM_PIN_RS;
   PulseLCD();
}

//---Установка позиции курсора---//
void Cursor(char Row, char Col)
{
   char address;
   if (Row == 0)
    address = 0;
   else
    address = 0x40;
   address |= Col;
   SendByte(0x80 | address, 0);
}

//---Очистка дисплея---//
void ClearLCDScreen()
{
   SendByte(0x01, 0);
   SendByte(0x02, 0);
}

//---Инициализация дисплея---//
void InitializeLCD(void)
{
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
   GPIOA->CRH |= 0x33333333; // конфигурируем на выход частота 50мгЦ
   GPIOA->CRL |= 0x33333333; // конфигурируем на выход частота 50мгЦ
   //GPIO_Init(GPIOB, &GPIO_InitStructure);
   LCM_OUT &= ~(LCM_PIN_MASK);
   delay(32000);
   delay(32000);
   delay(32000);
   LCM_OUT &= ~LCM_PIN_RS;
   LCM_OUT &= ~LCM_PIN_EN;
   LCM_OUT = 0x20;
   PulseLCD();
   SendByte(0x28, 0);
   SendByte(0x0E, 0);
   SendByte(0x06, 0);
}
//---Печать строки---//
void PrintStr(char *Text)
{
   char *c;
   c = Text;
   while ((c != 0) && (*c != 0))
   {
    SendByte(*c, 1);
    c++;
   }
}

уже что только не пробовал.... пробовал даже тайминги менять (в большую сторону) ничего не помогло...

При подаче питания - сверху засвечена вся строка. Подпаяно все правильно , проверил три раза.

Отладочная плата на процу STM32F100R8T6

помогите пожалуйста!

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Взял другую библиотеку. Она находится тут: http://easystm32.ru/...ary-for-hd44780

У меня дисплей заработал буквально через 3 минуты!

Расскажите , что я не так делаю в этой библиотеке? Все вроде правильно....

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
 GPIOA->CRH |= 0x33333333; // конфигурируем на выход частота 50мгЦ
 GPIOA->CRL |= 0x33333333; // конфигурируем на выход частота 50мгЦ
 //GPIO_Init(GPIOB, &GPIO_InitStructure);
 LCM_OUT &= ~(LCM_PIN_MASK);
 delay(32000);
 delay(32000);
 delay(32000);
 LCM_OUT &= ~LCM_PIN_RS;
 LCM_OUT &= ~LCM_PIN_EN;
 LCM_OUT = 0x20;
 PulseLCD();
 SendByte(0x28, 0);
 SendByte(0x0E, 0);
 SendByte(0x06, 0);

У меня отличается только вторая и третья строка в коде. Но по даташиту вроде правильно...

Так , но есть еще один прикол :)

Дисплей работает пока подано питание . Если питание сбросить - дисплей опять не инициализируется... Это что получается я пишу не во флешь? А в ОЗУ?

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...