nRF5 SDK v12.3.0: пример использования PPI |
![]() |
Добавил(а) microsin |
Пример использования блока Programmable Peripheral Interconnect (PPI) из SDK [1] реализует взаимодействие между тремя таймерами. Timer 0 запускается в основном цикле main каждые 100 мс. Значение счетчика timer 0 передается через порт UART, и это значение может наблюдаться в одной из программ терминала (например PuTTy) на хосте, который подключен через переходничок USB-UART. Timer 1 генерирует события каждую четную секунду, т. е. через 2, 4, 6, 8, ... секунд. Эти события запускают stop task для timer 0. Timer 2 генерирует события каждую нечетную секунду, т. е. через 1, 3, 5, 7, ... секунд. Эти события запускают start task для timer 0, который работает в режиме счетчика. Задачи start task и stop task активируются блоком PPI. Когда приложение запускается, значение счетчика timer 0 в течение первой секунды инкрементируется каждые 100 мс. Затем timer 2 создает событие, которое передается через PPI и генерирует stop task для timer 0, поэтому timer 0 останавливается. Несмотря на то, что основной цикл программы инициирует инкремент timer 0, его значение не изменяется, поскольку счетчик остановлен. После одной секунды timer 1 создает событие, которое передается через PPI, генерируя start task для timer 0. Timer 0 снова начинает счет, и значение счетчика снова увеличивается каждые 100 мс, пока не timer 0 не будет остановлен опять таймером 2 через одну секунду. Приложение при запуске выполняет 3 шага по конфигурированию трех таймеров: • Timer 0 конфигурируется в режиме счетчика. PPI конфигурируется таким образом, чтобы timer 0 останавливался и запускался по событиям, которые генерируют timer 1 и timer 2 соответственно. Основной цикл инкрементирует timer 0, и печатает значение его счетчика каждые 100 мс. Исходный код этого примера и файл проекта можно найти в каталоге установки SDK, папка examples\peripheral\ppi. [Тестирование примера PPI] 1. Скомпилируйте код примера. [Ссылки] 1. nRF5 SDK v12.3.0 PPI Example site:nordicsemi.com. |