Зарегистрирован: Сб мар 12, 2011 22:28:40 Сообщений: 30
Рейтинг сообщения:0
Доброго времени суток уважаемые коты! Совсем недавно познакомился с контроллерами STM32. В частности взял для себя отладочную плату stm32vldiscovery... Все супер! Уже успел поморгать светодиодами, подключил дисплей от Nokia 1100 и решил сделать часы.. Вот на этом все встало.Чувствую себя котенком. Часы запустились внутри самого контроллера и даже отображаются на дисплее, но не обновляются..Запустил в отладчике секунды идут, а на дисплее нет. Уже пару дней бьюсь над этим забросив все.. Друзья, кто нибудь может подсказать начинающему котенку в чем ошибка? И еще пытался организовать меню..Та же проблема. В отладчике работает, а на экране ничего не меняется. Прилагаю архив с проектом. Работаю в среде IAR..Вот ссылка на скачивание проекта(увы во вложение нельзя прикрепить файлы больше 1МБайт) https://yadi.sk/d/qEwF6FB7bqV7p
В отладчике работает - это при пошаговой отладке? Если да, тогда вероятно дело в необходимости задержек между командами на дисплей. Простые дисплеи довольно неторопливые, и за мощными контроллерами они не успевают часто)
_________________ Осилит дорогу идущий ---------- Пишу на Си за еду
Извините. У Вас в архиве около 450 файлов. Я не смог найти нужный исходник. Нашел только тот где написано STM32vldiscovery_LEDOn(LED3); А это и есть моргание светодиодом.
Ах да. Вот оно. Помещено в Project/Examples/SysTick Ну кто бы мог подумать! Ох тяжело читать - форматирование от случая к случаю. Все правильно - он делает то что Вы описали - один раз выводит показания часов а потом зависает в бесконечном пустом цикле. Ну по моему так. Нужно бесконечный цикл сделать не пустым. Ну или использовать прерывания.
init - последовательность действий по инициализайии display - последовательность действий по отображению. Естественно это может быть не одна функция а именно последовательность действий.
Зарегистрирован: Сб мар 12, 2011 22:28:40 Сообщений: 30
Рейтинг сообщения:0
спасибо. сделал.не помогло. как сделать секундное прерывание? и еще друзья могли бы пожалуйста поделится кодом для организации меню на STM32??? даны три кнопки меню, плюс и минус. Кнопка меню это вход и выход из меню а плюс и минус это перемещение по разделам меню. Не получается и все.
Зарегистрирован: Сб мар 12, 2011 22:28:40 Сообщений: 30
Рейтинг сообщения:0
Большое спасибо уважаемый Galizin!!! С часами разобрался.. нашел свой ошибки.. дописал код.. а теперь проблема с меню.. не хочет работать нормально.. Управление тремя кнопками (меню, плюс и минус). Кнопка меню позволяет входить в меню, в подпункты а также выходить назад выбрав пункт выход. А кнопками плюс минус можно перемещаться между подпунктами и изменять значение. Использовал в работе Switch Case... Подскажите пожалуйста как сделать меню с подпунктами под управлением трех кнопок?
Код:
/*меню будет из 4 пунктов. от 0 до 3 */
while(1){
if (knopka_menu){menu_pointer++; delay_ms(200);lcd1100_clear();} /* смещаем указатель, делаем против дребезга паузу и очищаем дисплей */ if (knopka_plus){str_menu++; delay_ms(200);lcd1100_clear();} if (knopka_minus){str_menu--; delay_ms(200);lcd1100_clear();}
lcd1100_gotoxy(3, 1); lcd1100_puts("УСТАНОВКА"); // вывели текст
} if(menu=2) {
lcd1100_gotoxy(3, 3); lcd1100_puts("СЕКУНДОМЕР"); // вывели текст
}
if(menu=3) {
lcd1100_gotoxy(3, 5); lcd1100_puts("БУДИЛЬНИК"); // вывели текст
} if(menu==4) {
lcd1100_gotoxy(3, 7); lcd1100_puts("НАСТРОЙКИ"); // вывели текст
} break;
case 2: /* Тут код который надо делать в 2 пункте меню */
lcd1100_gotoxy(4, 1); lcd1100_puts("УСТАНОВКА");
if(menu=1.1) {
lcd1100_gotoxy(3, 3); lcd1100_puts("время "); // вывели текст
} if(menu=2.1) {
lcd1100_gotoxy(3, 5); lcd1100_puts("дата"); // вывели текст
}
break;
case 3:
/* Тут код который надо делать в 2 пункте меню */ lcd1100_gotoxy(3, 1); lcd1100_puts("Секундомер"); lcd1100_gotoxy(1, 3); lcd1100_puts_big(3,2,"00-00");
К стм это имеет мало отношения Примерно так: Отрисовывается на экране меню - набор строк. Каждой строке соответствует свой номер. Номер текущей строки где то хранится. При отрисовке инверсно отображается соотв номеру строка. Это функция отображения. Теперь функция реагирования. Должна определять что нажата та или иная клавиша. Если нажата клавиша вверх, то индекс сдвигается вверх и вызывается функция перерисовки. Если вниз - то то же самое. Если же нажата клавиша ввод, то анализируете текущий номер стоки. В зависимости от его значения делаете нужные действия. В частности нужным действием может быть вызов другой функции, которая будет отрисовывать следующее меню. Для опроса кнопок можно сделать отдельную функцию, которая возвращала бы код клавиши, если она нажата. Может быть есть и другие алгоритмы.
Что это конкретно? Какое из описанных действий представляет трудность? Если все вместе, то разделите задачи и сделайте что то одно, потом другое, потом объедините ну и так далее
Зарегистрирован: Сб мар 12, 2011 22:28:40 Сообщений: 30
Рейтинг сообщения:0
Для меня трудность представляют подменю и функция опроса клавиш.. Точнее я сделал функцию опроса клавиш, но у меня не корректно реагируют на нажатие.. Не могу заставить кнопку переходить в подменю.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения