У меня возникали различные проблемы при попытке установить программные точки останова в Atmel Studio 7 с помощью отладчика Atmel-ICE с помощью SWD. Мне было интересно, может ли кто-нибудь объяснить более подробно (или указать мне направление документации), чтобы дать мне лучшее понимание того, почему я получаю следующие проблемы:
- Точки останова перемещаются при компиляции
- «Невозможно установить запрошенную точку останова на цели»
- Точка останова попадает только в первый раз в цикле
Следующий код представляет собой тестовую программу, которую я написал, чтобы продемонстрировать это с помощью процедур задержки и драйвера PORT ASF:
#include <asf.h>
#define LED PIN_PA01
int main (void)
{
system_init();
delay_init();
struct port_config config_port_pin;
config_port_pin.direction = PORT_PIN_DIR_OUTPUT;
port_pin_set_config(LED, &config_port_pin);
while(1)
{
port_pin_toggle_output_level(LED);
delay_ms(100);
}
}
- Если точка останова установлена на линии переключения светодиодов, то точка останова перемещается на следующую линию задержки.
- Если задержка закомментирована, а точка останова размещена в строке переключения светодиодов, это говорит мне, что невозможно установить запрошенную точку останова на цели.
- Если точка останова помещается на линию задержки, она срабатывает (программа останавливается) только на первой итерации цикла while. Если я продолжаю (F5), программа продолжает работать (светодиод переключается каждые 100 мс), но не останавливается в точке останова.
Насколько я знаю, код работает нормально. Светодиод переключается каждые 100 мс, как и ожидалось, когда я запускаю без отладки, это просто программные точки останова, которые я не совсем понимаю, извините за мое невежество.