| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Часы на STM32 https://radiokot.ru/forum/viewtopic.php?f=59&t=108393 |
Страница 1 из 1 |
| Автор: | goldhands [ Пн окт 06, 2014 11:10:08 ] |
| Заголовок сообщения: | Часы на STM32 |
Доброго времени суток уважаемые коты! Совсем недавно познакомился с контроллерами STM32. В частности взял для себя отладочную плату stm32vldiscovery... Все супер! Уже успел поморгать светодиодами, подключил дисплей от Nokia 1100 и решил сделать часы.. Вот на этом все встало.Чувствую себя котенком. Часы запустились внутри самого контроллера и даже отображаются на дисплее, но не обновляются..Запустил в отладчике секунды идут, а на дисплее нет. Уже пару дней бьюсь над этим забросив все.. Друзья, кто нибудь может подсказать начинающему котенку в чем ошибка? И еще пытался организовать меню..Та же проблема. В отладчике работает, а на экране ничего не меняется. Прилагаю архив с проектом. Работаю в среде IAR..Вот ссылка на скачивание проекта(увы во вложение нельзя прикрепить файлы больше 1МБайт) https://yadi.sk/d/qEwF6FB7bqV7p Заранее спасибо! |
|
| Автор: | slavokhire5 [ Пн окт 06, 2014 13:02:55 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
В отладчике работает - это при пошаговой отладке? Если да, тогда вероятно дело в необходимости задержек между командами на дисплей. Простые дисплеи довольно неторопливые, и за мощными контроллерами они не успевают часто) |
|
| Автор: | goldhands [ Пн окт 06, 2014 14:15:18 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
задержка была организованна.. толку ноль.. отладка была в STMStudio.. |
|
| Автор: | Galizin [ Пн окт 06, 2014 16:09:21 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
А что обозначает фраза - часы идут в отладчике? Я посмотрел проект. Что то не нашел там исходников работы с дисплеем. Только моргание светодиодами. |
|
| Автор: | goldhands [ Вт окт 07, 2014 09:03:47 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
Galizin писал(а): А что обозначает фраза - часы идут в отладчике? Я посмотрел проект. Что то не нашел там исходников работы с дисплеем. Только моргание светодиодами. lcd-nokia1100.h файл в папке с библиотеками. это библиотека работы с дисплеем. И нет там моргания светодиодом. |
|
| Автор: | Galizin [ Вт окт 07, 2014 11:14:09 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
Извините. У Вас в архиве около 450 файлов. Я не смог найти нужный исходник. Нашел только тот где написано STM32vldiscovery_LEDOn(LED3); А это и есть моргание светодиодом. Ах да. Вот оно. Помещено в Project/Examples/SysTick Ну кто бы мог подумать! Ох тяжело читать - форматирование от случая к случаю. Все правильно - он делает то что Вы описали - один раз выводит показания часов а потом зависает в бесконечном пустом цикле. Ну по моему так. Нужно бесконечный цикл сделать не пустым. Ну или использовать прерывания. |
|
| Автор: | goldhands [ Вт окт 07, 2014 14:47:51 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
Спасибо за ответ! не подскажите пожалуйста как это сделать? уже перепробовал разные варианты.не получается. туплю.. |
|
| Автор: | Galizin [ Вт окт 07, 2014 15:17:21 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
У вас сейчас вот так Код: main() А нужно{ init(); display(); while(1){}; } Код: main() init - последовательность действий по инициализайии{ init() while(1) { display(); } } display - последовательность действий по отображению. Естественно это может быть не одна функция а именно последовательность действий. |
|
| Автор: | goldhands [ Вт окт 07, 2014 15:41:30 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
спасибо. сделал.не помогло. как сделать секундное прерывание? и еще друзья могли бы пожалуйста поделится кодом для организации меню на STM32??? даны три кнопки меню, плюс и минус. Кнопка меню это вход и выход из меню а плюс и минус это перемещение по разделам меню. Не получается и все. |
|
| Автор: | Galizin [ Ср окт 08, 2014 10:49:33 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
http://www.radiokot.ru/forum/viewtopic.php?t=51032 - там мои исходники и меню и часов. Правда в калибровке часов там где то баг. Относительно прерывания - это Вам скорее всего поможет. Кнопки - http://radiokot.ru/circuit/digital/measure/113/ http://www.radiokot.ru/forum/viewtopic.php?f=25&t=95086 - вот еще проект с исходниками. Уже другого автора. и еще http://radiokot.ru/circuit/digital/measure/119/ - исходники с кнопками тоже есть на git. Ну и совсем свежее. Вроде там тоже кнопки и меню есть http://radiokot.ru/konkursCatDay2014/47/ |
|
| Автор: | goldhands [ Чт окт 09, 2014 15:30:43 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
Большое спасибо уважаемый 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();} if(str_menu==menu_pointer_max1){str_menu=0;} /* предел меню*/ if(menu_pointer==menu_pointer_max){menu_pointer=0;} /* предел меню*/ switch(menu_pointer){ case 0: lcd1100_gotoxy(5, 3); lcd1100_puts("Начальный экран"); break; case 1: if(menu=1) { 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"); break; case 4: /* Тут код который надо делать в 2 пункте меню */ lcd1100_gotoxy(4, 1); lcd1100_puts("Будильник"); lcd1100_gotoxy(1, 3); lcd1100_puts_big(3,2,"00-00"); lcd1100_gotoxy(1, 6); lcd1100_puts("Пн,Вт,Ср,Чт,Пт,"); lcd1100_gotoxy(1, 7); lcd1100_puts("Сб,Вс"); break; case 5: /* Тут код который надо делать в 2 пункте меню */ lcd1100_gotoxy(3, 1); lcd1100_puts("НАСТРОЙКА"); lcd1100_gotoxy(3, 3); lcd1100_puts("ВРЕМЯ"); lcd1100_gotoxy(3, 5); lcd1100_puts("ДАТА"); lcd1100_gotoxy(3, 7); lcd1100_puts("КОНТРАСТ"); break; case 6: { switch(str_menu) { case 0: lcd1100_gotoxy(5, 3); lcd1100_puts("-ФОРМАТ"); // вывели текст break; case 1: lcd1100_gotoxy(5, 3); lcd1100_puts("-ВРЕМЯ"); break; case 2: lcd1100_gotoxy(5, 3); lcd1100_puts("-ДАТА"); break; case 3: lcd1100_gotoxy(5, 3); lcd1100_puts("-КОНТРАСТ"); break; } break; } case 7: { switch(str_menu) { case 0: lcd1100_gotoxy(5, 3); lcd1100_puts("-Настрйока0"); // вывели текст break; case 1: lcd1100_gotoxy(5, 3); lcd1100_puts("-Настройка1"); break; case 2: lcd1100_gotoxy(5, 3); lcd1100_puts("-Настройка2"); break; case 3: lcd1100_gotoxy(5, 3); lcd1100_puts("-Настройка3"); } break; } break; } } } |
|
| Автор: | Galizin [ Чт окт 09, 2014 16:26:17 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
К стм это имеет мало отношения Примерно так: Отрисовывается на экране меню - набор строк. Каждой строке соответствует свой номер. Номер текущей строки где то хранится. При отрисовке инверсно отображается соотв номеру строка. Это функция отображения. Теперь функция реагирования. Должна определять что нажата та или иная клавиша. Если нажата клавиша вверх, то индекс сдвигается вверх и вызывается функция перерисовки. Если вниз - то то же самое. Если же нажата клавиша ввод, то анализируете текущий номер стоки. В зависимости от его значения делаете нужные действия. В частности нужным действием может быть вызов другой функции, которая будет отрисовывать следующее меню. Для опроса кнопок можно сделать отдельную функцию, которая возвращала бы код клавиши, если она нажата. Может быть есть и другие алгоритмы. |
|
| Автор: | goldhands [ Пт окт 10, 2014 08:59:48 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
В теории я все это понимаю..Скажите пожалуйста как это реализовать в программе? Скачал готовые проекты с исходниками. Если честно то запутался в них.. |
|
| Автор: | Galizin [ Пт окт 10, 2014 18:17:42 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
Что это конкретно? Какое из описанных действий представляет трудность? Если все вместе, то разделите задачи и сделайте что то одно, потом другое, потом объедините ну и так далее |
|
| Автор: | goldhands [ Сб окт 11, 2014 08:36:30 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
Для меня трудность представляют подменю и функция опроса клавиш.. Точнее я сделал функцию опроса клавиш, но у меня не корректно реагируют на нажатие.. Не могу заставить кнопку переходить в подменю. |
|
| Автор: | Galizin [ Сб окт 11, 2014 20:12:06 ] |
| Заголовок сообщения: | Re: Часы на STM32 |
Я тоже еще ни разу не заставлял кнопку переходить в подменю. |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


