电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
问答
assert_param是用来做什么的?
已解决
73482
个问题
已帮助
5993
位优秀工程师
assert_param是用来做什么的?
捷波
2018-07-20
浏览量:1673
STM32固件库中的assert_param是用来做什么的?这个assert_param是如何实现参数检测呢?
显示全部
关注问题
写回答
0
0
收起
我来回答
上传资料:
选择文件
文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
王奕
实际这是个调试函数,当你在调试程序时打开DEBUG参数assert_param才起作用。
assert_param是反映参数你在调用库函数传递的参数是错误的。
assert_param的原型定义在stm32f10x_conf.h 文件里
定义如下:
#ifdef DEBUG
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__ __LINE__))
void assert_failed(u8* file u32 line);
#else
#define assert_param(expr) ((void)0)
#endif
#endif
可以看到assert_param实际在DEBUG打开时就是assert_failed,关闭DEBUG时是空函数
assert_failed函数如下
#ifdef DEBUG
void assert_failed(u8* file u32 line)
{
//用户可以在这里添加错误信息:比如打印出出错的文件名和行号
while (1)
{
}
}
#endif
发布于
2018-07-20
举报
评论 0
1
0
其他答案
数量:
11
skawu
断言,来检测参数是否正确的,你可以通过代码跳转去看看宏实现,自己实际去看看就清楚了
发布于
2018-07-20
举报
评论 0
1
0
xdsnet
断言其实是一种编程机制。
大多数用于调试开发。
它的实现拟可以追踪宏定义去查看
发布于
2018-07-20
举报
评论 0
0
0
明有几时有
这个是断言,检查函数的参数对不对的。
是要使用到编译器的库的
发布于
2018-07-20
举报
评论 0
0
0
厉害企鹅
这是在调试的时候才有用的函数,是为了判断函数参数正不正确的,可以使用优化优化掉的
发布于
2018-07-20
举报
评论 0
0
0
yhj416606438
检测函数,检测输入的参数是否超出范围,如果确认没问题,可以不用这函数,加快执行速度
发布于
2018-07-21
举报
评论 0
0
0
最帅的廖先生
这是调试用的吧
发布于
2018-07-22
举报
评论 0
0
0
chen0000009
断言机制,这种一般只会在调试的时候使用的
发布于
2018-07-22
举报
评论 0
0
0
donatello
这个是断言,用于给单片机程序的异常处理,当单片机出现异常的时候就会进入这个中断服务函数处理,不过一般都是不需要用到的。
发布于
2018-07-22
举报
评论 0
0
0
喵不是好兔纸
这个是断言语句,用来检测你的输入是否满足条件
发布于
2018-07-25
举报
评论 0
0
0
菜鸟冷虎
这个是做一个条件的判断,检查你的输入参数是否符合条件
发布于
2018-08-07
举报
评论 0
0
0
序缘阿斌
断言机制,主要是检测你的输入参数是否符合函数的条件
发布于
2018-08-18
举报
评论 0
0
0
相关问题
问题达人
换一批
文章
知识经验换现金
换一批
assert_param是用来做什么的?
写回答
关注问题
×
我要举报该内容,理由是:
内容质量差:
内容太水、伸手党
垃圾广告信息:
广告、招聘、推广、测试内容等
偏离问答主题:
与技术无关、讨论类
与社区已有内容重复:
违规内容:
色情、暴力、血腥、敏感信息等
不友善内容:
人事攻击、挑衅辱骂、恶意行为
以上选项都不是: