这是一个判断函数,用于检查在别的函数中填入的参数是否正确。要说明的是,该函数默认不工作。
在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 */
可以看到该函数有两类情况下的定义:
- 若项目中定义了USE_FULL_ASSERT,当里面的函数返回的值为true,则函数不执行任何操作;若返回的值为false,则assert_failed()理应返回包含位置的错误报告。但代码中assert_failed()仅仅是个框架,因此该报错功能需要开发者自己编写。
- 通常USE_FULL_ASSERT是没有被定义的,那么该函数往往不会执行任何操作。