[{{mminutes}}:{{sseconds}}] X
Пользователь приглашает вас присоединиться к открытой игре игре с друзьями .
машинка12341
(0)       Используют 3 человека

Комментарии

Ни одного комментария.
Написать тут
Описание:
параша
Автор:
Koct9l
Создан:
9 октября 2021 в 10:17
Публичный:
Да
Тип словаря:
Слова
Текст для игры будет составляться из слов, перемешанных в случайном порядке.
Информация:
Генерируем проект заново и открываем файл main.c. В нем нам потребуется в ручную запустить таймер в нужном нам режиме. Делается это командой HAL_TIM_Base_Start_IT(&htim4);. IT подразумевает запуск таймера в режиме прерываний. Указатель &htim14 передает функции структуру данных, в которой описаны настройки таймеров. Она генерируется автоматически CubeMX’ом.
Обратите внимание, что функция HAL_TIM_Base_Start_IT(&htim4); вызывается до вхождения в бесконечный цикл.

Далее снова переходим в файл "stm321xx_it.c" и в обработчике прерывания TIM4_IRQHandler добавляем код HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13); , изменяющий состояние вывода.

Результат: При нажатой кнопке диод мигает 1 раз в секунду.

3. Внешние переменные
На практике очень часто в прерывании возникает необходимость изменять переменные, которые используются в основном цикле. То есть обращаться к переменным, описанным в другом файле.
Для примера запустим мигание светодиодом в основном цикле с переменной частотой, а частоту будем изменять в прерывании от кнопки.
Начнем с создания переменной в файле main.c:
uint16_t pause=100;

Далее закомментируем функцию запуска таймера в 106ой строке и добавим код, мигающий светодиодом:

Если мы сейчас скомпилируем и загрузим эту программу, то светодиод начнет мигать с периодичностью 200мс. Но будем изменять эту периодичность при помощи кнопки.
Поэтому переходим в файл stm321xx_it.c и создаем в нем внешнюю переменную:
extern uint16_t pause;
Служебное слово extern расширяет область видимости переменной. Важно то, что переменная инициализируется, но не определяется. То есть ей не присваивается никакое значение.

Осталось только добавить изменение этой переменной в прерывании. В строках 201, 202 мы просто прибавляем 100, если переменная меньше тысячи и присваиваем значение, если она равна тысяче.

Результат: Скомпилированная программа при старте будет мигать светодиодом быстро, а при нажатии кнопки будет изменять частоту мигания светодиодом.
Содержание:
ку ку ку

Связаться
Выделить
Выделите фрагменты страницы, относящиеся к вашему сообщению
Скрыть сведения
Скрыть всю личную информацию
Отмена