STM32中assert_param的使用

转载 2015年11月18日 22:07:34
在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)
{}
}
 
你可以按照自己使用的环境需求,添加适当的语句输出错误的信息提示,或修改这个函数做出适当的错误处理。

STM32的断言机制——函数assert_param()

我们在学STM32的时候函数assert_param出现的几率非常大,上网搜索一下,网上一般解释断言机制,做为程序开发调试阶段时使用。 下面我就谈一下我对这些应用的看法,学习东西抱着知其然也要知...
  • mhl119
  • mhl119
  • 2014年07月20日 12:09
  • 1147

STM32固件库中assert_param的作用——学习笔记

在学习stm32库函数过程中,笔者遇到大量的assert_param语句。经查明,assert_param的作用就是用来判断传递给函数的参数是否是有效值。 以下是从固件库中复制粘贴的: v...
  • laiyiketang
  • laiyiketang
  • 2016年07月24日 16:41
  • 4528

单片机之STM32 中的 assert_param 函数

我们在学STM32的时候函数assert_param出现的几率非常大,上网搜索一下,网上一般解释断言机制,做为程序开发调试阶段时使用。下面我就谈一下我对这些应用的看法,学习东西抱着知其然也要知其所以然...
  • lqhed
  • lqhed
  • 2016年07月13日 19:13
  • 570

STM32中assert_param的使用

在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义...
  • qianwenchuan
  • qianwenchuan
  • 2013年12月18日 07:48
  • 261

编译提醒:function “assert_param” declared implicitly

2019.06.08 问题描述 程序编译时出现提醒:warning: #223-D: function “assert_param” declared implicitly 解决方案 1、按...
  • wisdom8412
  • wisdom8412
  • 2016年09月10日 22:56
  • 2409

stm32学习笔记

今天使用奋斗stn32开发板,编译程序时 出现了一下错误,网上有很多解决方案,可是一直没解决,  在链接过程中出现assert_param函数未定义的错误:Error: L6218E: Undefi...
  • ycdhonker
  • ycdhonker
  • 2013年11月21日 18:06
  • 2027

stm32中assert_param()的作用

在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义...
  • yeshuming
  • yeshuming
  • 2014年04月11日 20:45
  • 296

STM32 中的 assert_param 函数

我们在学STM32的时候函数assert_param出现的几率非常大,上网搜索一下,网上一般解释断言机制,做为程序开发调试阶段时使用。下面我就谈一下我对这些应用的看法,学习东西抱着知其然也要知其所以然...
  • fuyunliushuizjf
  • fuyunliushuizjf
  • 2015年04月22日 09:58
  • 355

跟我学STM32107RC--- STM32中assert_param的使用

STM32中assert_param的使用     在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h...
  • zzl6232000
  • zzl6232000
  • 2017年02月14日 22:52
  • 70

STM32中assert_param的使用(转)

在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义...
  • CPJ_phone
  • CPJ_phone
  • 2014年09月15日 16:56
  • 605
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STM32中assert_param的使用
举报原因:
原因补充:

(最多只允许输入30个字)