JAVA и STM32 - курс экспресс-программирования с MicroEJ. Часть шестая
Задержка между изменениями состояния диода выполняется методом Thread.sleep (long milis), который принимает количество миллисекунд потока, в котором был вызван поток. Кроме того, он должен находиться в блоке try-catch, потому что если сон прерывается, он отправляет вызывающей стороне исключение, которое необходимо обработать.
Изменение состояния диода также может быть выполнено в ответ на событие кнопки, как показано на кнопке executeAction executeAction (листинг 4).
public void performAction(int value) { System.out.println("Got event number "+value); int action = Buttons.getAction(value); switch (action) { case Buttons.PRESSED: System.out.println("Button PRESSED"); Leds.setLedOn(1); break; case Buttons.RELEASED: System.out.println("Button RELEASED"); Leds.setLedOff(1); break; default: break; } } Листинг 4. Поддержка светодиодов в методе ButtonAistener executeAction
Перед запуском примера стоит упомянуть, что во время симуляции информация о платформе (в данном случае количество светодиодов и кнопок) берется из файла * -fp? Definitions? Frontpanel.pl. С другой стороны, при работе в физической системе информация о платформе берется из файлов платформы * -bsp.
Начиная с оценочного набора
Пока что приложение создано для нужд симулятора. Чтобы включить его в физической системе, в конфигурации (Запуск от имени? Запуск конфигураций ...) на вкладке Выполнение выберите параметр Выполнить в EmbJPF. После успешной компиляции вы можете запустить среду Keil, щелкнув * -bsp \\ Project \\ MicroEJ \\ MDK-ARM \\ Project.uvproj, и собрать источники в C, выбрав Project? Build target. После завершения вы можете подключить оценочный набор STM32F429I-DISCO к вашему компьютеру и выбрать Flash? Download. Программа должна запуститься автоматически.
В этом примере используется операционная система RTX, а виртуальная машина Java запускается как ее задача. Это можно увидеть в файле main.c и главной функции, где вызывается функция os_sys_init_user (javaTask, 10, & javaTaskStack, sizeof (javaTaskStack)). Среди источников вы также можете найти файлы buttons.c, которые включают в себя функции конфигурации, обработку прерываний и пересылку событий на более высокий уровень приложений, и LLLEDS.c, где есть функции, информирующие о количестве настроенных диодов и изменении их состояния.
Во время работы приложения в обычном режиме все функции printf (на языке C) и System.out.println (на Java) перенаправляются на выход последовательного порта USART2. Однако вы можете настроить отладчик так, чтобы вы могли наблюдать за сообщениями без необходимости подключения последовательного порта. Чтобы изменить функцию fputc в файле putchar.c, изменив последнюю строку (return ch) на вызов (return (ITM_SendChar (ch))), а в конфигурации (Project? Options for target) включите опцию Enable Trace и установите соответствующую тактовую частоту ( 180 МГц) - рисунок 6.
![Включение консоли во время отладки](/images/content/rys6a_6.PNG)
![Включение консоли во время отладки](/images/content/rys6b_6.PNG) Рис. 6. Включение консоли во время отладки
Кстати к программированию и разработке софта, если вас интересует "KMSAuto NET" скачать его вы можете по ссылке скачать KMSAuto Net
![Сообщения функции printf во время отладки](/images/content/art_rys7_6.PNG) Рис. 7. Сообщения функции printf во время отладки
По умолчанию линия данных интерфейса SWD на плате отключена от процессора. Его можно подключить с помощью короткого замыкания моста SB9 или путем соединения контакта 6 разъема CN2 с контактом PB3 процессора.
Чтобы наблюдать за сообщениями, войдите в режим отладки из списка серий Windows, выберите Debug (printf) Viewer (рисунок 7).
|