"); //-->
在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从技术创新到应用落地
LA4460N 音响IC电路
尖峰对话:研宇做“新梦”闯网络通讯市场
基于时间测量的BPSK信号非相干解调方法
价格高速度慢 手机发明人Cooper称3G名存实亡
2025年智能手机新赛道 —— 超薄机型
LA4461N 音响IC电路
联宝老总发神经?笔记本将上演第3波雪崩
2009大赛B题MMC-1模块介绍
“瑞萨杯2011全国大学生电子设计竞赛”新闻发布会①
基于换能器解卷积的高精度超声波测距系统
瑞萨电子模拟器件技术讲座
打开无线游戏市场新局面 诺基亚将推出游戏手机
又拆了一个报废的数控电源,画个原理图给大家参考
LA4465 音响IC电路
英特尔宣布首款Intel 18A芯片下半年发布
传感器选用原则
美国国防部将腾讯、宁德时代、长鑫存储等134家中企列入黑名单
基于双微处理器的发电机转子交流阻抗测试仪的研制
三星旗舰Galaxy S25系列放弃自家内存,美光成为首要供应商
Easy MCU Easy RF
如何排查嵌入式开发中的问题?
黄仁勋宣布英伟达合作机器人伙伴:宇树科技与小鹏均在其列!
基于局部特征和整体特征融合的面部表情识别
瑞萨16位单片机讲座
详解芯片内部各个电路结构!(值得收藏)
LA4475 音响IC电路
去耦电容,是“耦”了什么?非要“去”了?
LA4445 音响IC电路
基于贡献矩阵的微钙化点检测