专栏中心

EEPW首页 > 专栏 > 如何使用assert_param

如何使用assert_param

发布人:0750long 时间:2010-02-02 来源:工程师 发布文章
如何使用assert_param

 

 

在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。

所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_param()可以在运行的程序调用到这个函数时报告错误,使程序员可以及时发现错误,而不必等到程序运行结果的错误而大费周折。

这是一种常见的软件技术,可以在调试阶段帮助程序员快速地排除那些明显的错误。

它确实在程序的运行上牺牲了效率(但只是在调试阶段),但在项目的开发上却帮助你提高了效率。

当你的项目开发成功,使用release模式编译之后,或在stm32f10x_conf.h文件中注释掉对USE_FULL_ASSERT的宏定义,所有的assert_param()检验都消失了,不会影响最终程序的运行效率。

 


 

在执行assert_param()的检验时,如果发现参数出错,它会调用函数assert_failed()向程序员报告错误,在任何一个例程中的main.c中都有这个函数的模板,如下:

void assert_failed(uint8_t* file, uint32_t line)
{
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  while (1)
  {}
}

你可以按照自己使用的环境需求,添加适当的语句输出错误的信息提示,或修改这个函数做出适当的错误处理。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

新年新起点,研华以Edge Computing & Edge AI ,助力工业AI从技术创新到应用落地

2025年智能手机新赛道 —— 超薄机型

2025-01-07

2009大赛B题MMC-1模块介绍

视频 2011-06-14

“瑞萨杯2011全国大学生电子设计竞赛”新闻发布会①

瑞萨电子模拟器件技术讲座

视频 2011-06-14

又拆了一个报废的数控电源,画个原理图给大家参考

英特尔宣布首款Intel 18A芯片下半年发布

EDA/PCB 2025-01-07

美国国防部将腾讯、宁德时代、长鑫存储等134家中企列入黑名单

​三星旗舰Galaxy S25系列放弃自家内存,美光成为首要供应商

2025-01-07

Easy MCU Easy RF

视频 2011-06-14

如何排查嵌入式开发中的问题?

2025-01-07

黄仁勋宣布英伟达合作机器人伙伴:宇树科技与小鹏均在其列!

瑞萨16位单片机讲座

视频 2011-06-14

去耦电容,是“耦”了什么?非要“去”了?

更多 培训课堂
更多 焦点
更多 视频

技术专区