Точка наблюдения на регистре STM32 GPIO - PullRequest
0 голосов
/ 29 апреля 2019

с использованием Keil µVision на STM32F4 Я пытаюсь добавить точку наблюдения в регистр данных GPIO, который просто не запускается.Я хочу, чтобы точка наблюдения была запущена, как только выходные данные будут записаны в этот регистр.Установка точки наблюдения на таймер ос работает нормально.Насколько мне известно, периферийные регистры отображены в памяти в STM32 F4.

Любое (простое) объяснение, которое мне здесь не хватает?Любая подсказка очень ценится.

Ответы [ 3 ]

0 голосов
/ 30 апреля 2019

Хотя ядро ​​ARM может получать доступ к периферийным регистрам ввода-вывода в том же плоском 32-битном адресном пространстве, что и SRAM или флэш-память, периферийные регистры ввода-вывода расположены на отдельных шинах на MCU и не доступны для этой же шины. как SRAM. Например, на STM32F есть шина ABH, которая обычно дополнительно делится на шины APB1 и APB2, в зависимости от устройства. В любом случае блок контроллера отладки, определенный ARM («CoreSight»), обеспечивает возможность наблюдения за данными и работает только при «реальном» доступе к данным.

Было бы здорово, если бы это было так; -)

0 голосов
/ 01 мая 2019

есть обходной путь, если задержка 12 циклов является проблемой. Используйте Pin в качестве триггера, который запускает передачу памяти в память DMA. Установите точку наблюдения на адресе ОЗУ получателя (или источника).

0 голосов
/ 29 апреля 2019

Нет источника или личного опыта, но я могу придумать несколько причин, почему это не сработает.

Часто значение не «там», как в ОЗУ, а создается при доступе к периферийному регистру.

Вы могли бы сказать, что периодический доступ мог бы тогда решить эту проблему, но это не сработало бы для регистров, где чтение имеет побочные эффекты (обычно очищение некоторого флага состояния).

Я думаю, вам придется создать обработчик прерываний для GPIO и точку останова для этого.

...