博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STM32中assert_param的使用
阅读量:5329 次
发布时间:2019-06-14

本文共 707 字,大约阅读时间需要 2 分钟。

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

所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_param()可以在运行的程序调用到这个函数时报告错误,使程序员可以及时发现错误,而不必等到程序运行结果的错误而大费周折。这是一种常见的软件技术,可以在调试阶段帮助程序员快速地排除那些明显的错误。

它确实在程序的运行上牺牲了效率(但只是在调试阶段),但在项目的开发上却帮助你提高了效率。当你的项目开发成功,使用release模式编译之后,或在stm32f10x_conf.h文件中注释掉对USE_FULL_ASSERT的宏定义,所有的assert_param()检验都消失了,不会影响最终程序的运行效率。

要选择DEBUG和RELEASE模式,需要修改stm32f10x_conf.h的内容。#define DEBUG 表示DEBUG模式,把该语句注释掉,则为RELEASE模式。也可以在Options,C/C++,Define里填入DEBUG的预定义。这样,就不需要修改stm32f10x_conf.h的内容。如果把库加入项目,则不需要将ST的库源文件加入项目,比较方便。但是,库的选择要和DEBUG预定义对应。

转载于:https://www.cnblogs.com/Lifescoding/p/4224111.html

你可能感兴趣的文章
Android Studio 创建/打开项目时一直处于Building“project name”Gradle project info 的解决...
查看>>
Android ViewPager使用详解
查看>>
【转】C# 过滤HTML,脚本,数据库关键字,特殊字符
查看>>
iATKOS v7硬盘安装教程(硬盘助手+变色龙安装版)
查看>>
Android连接数据库的问题
查看>>
A Story of One Country (Hard) CodeForces - 1181E2 (分治)
查看>>
Android使用本地广播
查看>>
python 删除大表数据
查看>>
【CC评网】2013.第44周 把握每天的第一个小时
查看>>
高效的使用STL
查看>>
用Perl编写Apache模块续 - SVNAuth
查看>>
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
查看>>
tips to understand kexec
查看>>
mybatis入门
查看>>
分层图最短路【bzoj2763】: [JLOI2011]飞行路线
查看>>
FastReport.Net使用:[18]形状(Shape)控件用法
查看>>
maven常用命令
查看>>
西安游记(钟楼 -- 回民街 -- 西安古城墙)
查看>>
Java异步NIO框架Netty实现高性能高并发
查看>>
2014百度之星第一题Energy Conversion
查看>>