Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кармин Новиелло - Освоение STM32.pdf
Скачиваний:
2740
Добавлен:
23.09.2021
Размер:
47.68 Mб
Скачать

Продвинутые методы отладки

688

24.2.5. Представление Core Registers

Представление Registers, показанное на рисунке 18, позволяет получить доступ к регистрам ядра Cortex-M, а также к регистрам FPU в ядрах Cortex-M4F/7, если FPU включен. Содержимое регистров можно в конечном счете изменить, дважды щелкнув по значению регистра.

Рисунок 18: Представление Registers в перспективе отладки

24.3. Средства отладки от CubeHAL

CubeHAL реализует обнаружение отказов во время выполнения путем проверки входных значений всех API-функций HAL. Проверка во время выполнения достигается с помощью макроса assert_param(). Этот макрос используется во всех функциях CubeHAL, имеющих входной параметр. Он позволяет проверить, что входное значение параметра находится в пределах допустимых значений.

Чтобы разрешить проверку во время выполнения, необходимо определить макрос USE_FULL_ASSERT на уровне проекта (как в настройках проекта, так и в комментариях к определению макроса в файле stm32XXxx_hal_conf.h). CubeMX генерирует функцию с именем assert_failed() в файле main.c. Функция определена следующим образом:

void assert_failed(uint8_t* file, uint32_t line);

Функция автоматически вызывается макросом assert_param(), если утверждение не выполняется. Макрос автоматически передаст функции имя файла и точные строки кода, где условие утверждения не выполняется.

Реализация функции assert_failed() оставлена на усмотрение пользователя. Простейшей реализацией является установка программной точки останова, вызвав инструкцию bkpt ассемблера ARM:

void assert_failed(uint8_t* file, uint32_t line) {

asm("BKPT #0");

}

Включение макроса USE_FULL_ASSERT на этапе разработки может помочь понять, что происходит с CubeHAL, особенно если вы новичок в CubeHAL.