【STM32笔记】:P04 断言的使用

stm32f10x_conf.h 这个文件还可配置是否使用"断言"编译选项


断言配置,如下:

javascript 复制代码
#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 */

在 ST 标准库的函数中,一般会包含输入参数检查,即上述代码中的"assert_param"宏,当参数不符合要求时,会调用"assert_failed"函数,这个函数默认是空的。实际开发中使用断言时,先通过定义 USE_FULL_ASSERT 宏来使能断言,然后定义"assert_failed"函数,通常我们会让它调用 printf 函数输出错误说明。使能断言后,程序运行时会检查函数的输入参数,当软件经过测试,可发布时,会取消 USE_FULL_ASSERT 宏来去掉断言功能,使程序全速运行。

相关推荐
小陈phd2 分钟前
多模态大模型学习笔记(二十一)—— 基于 Scaling Law方法 的大模型训练算力估算与 GPU 资源配置
笔记·深度学习·学习·自然语言处理·transformer
丝斯20115 分钟前
AI学习笔记整理(75)——Python学习4
人工智能·笔记·学习
ID_180079054737 分钟前
小红书笔记详情API深度解析:数据获取与应用实践
笔记
JulyLi201915 分钟前
RK3576 yolov8部署笔记
笔记·yolo
小帅学编程16 分钟前
英语学习笔记
java·笔记·学习
浅念-21 分钟前
C ++ 智能指针
c语言·开发语言·数据结构·c++·经验分享·笔记·算法
今儿敲了吗22 分钟前
python基础学习笔记第七章——文件操作
笔记·python·学习
Nan_Feng_ya43 分钟前
基于STM32的智能手表复刻成功(完全开源)
arm开发·stm32·pcb工艺·智能手表
Yu_Lijing1 小时前
基于C++的《Head First设计模式》笔记——生成器模式
c++·笔记·设计模式
HalvmånEver1 小时前
Linux:基于socket套接字写的简易英译汉翻译服务器
单片机·嵌入式硬件