理解STM32的assert_param函数

这是一个判断函数,用于检查在别的函数中填入的参数是否正确。要说明的是,该函数默认不工作。

 

在stm32f10x_conf.h中定义了该函数

#ifdef  USE_FULL_ASSERT

/**
  * @brief  The assert_param macro is used for function's parameters check.
  * @param  expr: If expr is false, it calls assert_failed function which reports 
  *         the name of the source file and the source line number of the call 
  *         that failed. If expr is true, it returns no value.
  * @retval None
  */
  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
  void assert_failed(uint8_t* file, uint32_t line);
#else
  #define assert_param(expr) ((void)0)
#endif /* USE_FULL_ASSERT */

#endif /* __STM32F10x_CONF_H */

可以看到该函数有两类情况下的定义:

  1. 若项目中定义了USE_FULL_ASSERT,当里面的函数返回的值为true,则函数不执行任何操作;若返回的值为false,则assert_failed()理应返回包含位置的错误报告。但代码中assert_failed()仅仅是个框架,因此该报错功能需要开发者自己编写。
  2. 通常USE_FULL_ASSERT是没有被定义的,那么该函数往往不会执行任何操作。

 

上一篇:MarkDown学习


下一篇:Hello world