【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 宏来去掉断言功能,使程序全速运行。

相关推荐
Logic10110 分钟前
C语言/数据结构贡献法题解:数组权值——所有连续子数组中不同数字个数之和(O(n)解法)
c语言·数据结构·算法·数组·时间复杂度·贡献法·哈希记录
Code_Solitude27 分钟前
C语言分支结构练习题(华师版)
c语言·开发语言
H.莓飛39 分钟前
【Linux】进程的创建与终止
linux·运维·服务器·c语言·visual studio
从小白到软工1 小时前
4-1 指针
c语言·开发语言·数据结构·经验分享·ai编程
我命由我123451 小时前
准入类与水平类职业资格
笔记·学习·职场和发展·产品运营·求职招聘·职场发展·产品经理
女神下凡1 小时前
芯参谋(49):eMCP_软件设计规范
arm开发·嵌入式硬件·设计规范
He BianGu1 小时前
【笔记】在WPF中BitmapScalingMode的作用
笔记·wpf
Zw-awa1 小时前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
stm32
嵌入式学习菌1 小时前
Modbus 03H 最多读多少寄存器?10H 最多写多少寄存器?
单片机
北纬的小熊1 小时前
Matlab Simulink电力电子仿真-全桥 LLC 谐振变换器调频控制(PFM)仿真研究
嵌入式硬件·matlab