:::: MENU ::::

assert_param stm32

При отладке программы очень удобно для вывода сообщений об той или иной ситуации, иметь универсальную функцию, которая позволяла бы выводить сообщение об ошибке, номер строки и файл в котором эта ошибка возникла. Для этого, в библиотеке периферии от ST, используется assert_param. 

Перед тем как использовать данную функцию необходимо указать, что мы ее используем:

#define USE_FULL_ASSERT

И создать функцию обработчик:

void assert_failed(uint8_t* file, uint32_t line)
{
  debug_printf("Wrong parameters value: file %s on line %d\r\n", file, (int)line);
}

Пример использования:

assert_param(TESTING(test));

#define TESTING(PAR) (((PAR) == 10) || \
                      ((PAR) == 11) || \
                      ((PAR) == 12))

uint8_t tmp = 13;

assert_param(TESTING(tmp));
assert_param(tmp == 13);

На самом деле assert_param представляет собой:

assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))

Или в более простой записи:

if(expr) 
  продолжаем программу
else
  assert_failed

expr — это выражение, которое передается в assert_param(expr)assert_param(x > 10).