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

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

在STM32的固件库和提供的例程中。到处都能够见到assert_param()的使用。

假设打开不论什么一个例程中的stm32f10x_conf.h文件,就能够看到实际上assert_param是一个宏定义;


在固件库中,它的作用就是检測传递给函数的參数是否是有效的參数。


所谓有效的參数是指满足规定范围的參数。比方某个參数的取值范围仅仅能是小于3的正整数,假设给出的參数大于3,

则这个assert_param()能够在执行的程序调用到这个函数时报告错误,使程序猿能够及时发现错误,而不必等到程序执行结果的错误而大费周折。

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

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

当你的项目开发成功,使用release模式编译之后。或在stm32f10x_conf.h文件里凝视掉对USE_FULL_ASSERT的宏定义。全部的assert_param()检验都消失了,不会影响终于程序的执行效率。

#define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__))
。。。

assert_param(IS_ADC_ALL_PERIPH(ADCx));
。。

在运行assert_param()的检验时,假设发现參数出错,它会调用函数assert_failed()向程序猿报告错误,在不论什么一个例程中的main.c中都有这个函数的模板,例如以下:

void assert_failed(uint8_t* file, uint32_t line)

{

while (1)
{}
}

你能够依照自己使用的环境需求,加入适当的语句输出错误的信息提示,或改动这个函数做出适当的错误处理。

1、STM32F10xD.LIB是DEBUG模式的库库文件。

2、STM32F10xR.LIB是Release模式的库库文件。
3、要选择DEBUG和RELEASE模式,须要改动stm32f10x_conf.h的内容。
    #define DEBUG 表示DEBUG模式,把该语句凝视掉,则为RELEASE模式。
4、要选择DEBUG和RELEASE模式,也能够在Options,C/C++,Define里填入DEBUG的提前定义。

    这样,就不须要改动stm32f10x_conf.h的内容。
5、假设把库增加项目。则不须要将ST的库源文件增加项目,比較方便。

    可是。库的选择要和DEBUG提前定义相应。

转载于:https://www.cnblogs.com/cxchanpin/p/6973599.html

你可能感兴趣的文章
PAT1025. PAT Ranking
查看>>
The difference between macro and function I/Ofunction comparision(from c and pointer )
查看>>
jekins自动部署tomcat注意事项、连接tomcat报错
查看>>
Android--ViewPager的无限轮播
查看>>
使用jdbc给一张表增加多行字段
查看>>
My97DatePicker时间控件使用
查看>>
如何给Runnable线程传递参数?
查看>>
sql2008无法远程连接问题设置
查看>>
Python 自动补全(vim)
查看>>
封装 DBDA 类 StrQuery 、JSONQuery
查看>>
ADO.NET(一)
查看>>
[ruby on rails] 深入(1) ROR的一次request的响应过程
查看>>
最小生成树-Prim算法和Kruskal算法
查看>>
ScriptedSandbox64.exe 在写Winform程序Debug时不停提交数据
查看>>
js一些跳转网页以及自动弹出广告
查看>>
VMware-CnetOs--lamp环境
查看>>
SQL Server无法启动,错误代码 3417(太久没用,目录被压缩了)
查看>>
bzoj1854: [Scoi2010]游戏(匈牙利) / GDKOI Day2 T2(最大流)
查看>>
bzoj1968: [Ahoi2005]COMMON 约数研究(数论)
查看>>
数据库面熟题,转载自http://blog.itpub.net/23451429/
查看>>