• 已解决 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
  • 断言,来检测参数是否正确的,你可以通过代码跳转去看看宏实现,自己实际去看看就清楚了
    • 发布于2018-07-20
    • 举报
    • 评论 0
    • 1
    • 0

  • 断言其实是一种编程机制。

    大多数用于调试开发。

    它的实现拟可以追踪宏定义去查看

    • 发布于2018-07-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是断言,检查函数的参数对不对的。

    是要使用到编译器的库的

    • 发布于2018-07-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 这是在调试的时候才有用的函数,是为了判断函数参数正不正确的,可以使用优化优化掉的
    • 发布于2018-07-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 检测函数,检测输入的参数是否超出范围,如果确认没问题,可以不用这函数,加快执行速度
    • 发布于2018-07-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 断言机制,这种一般只会在调试的时候使用的
    • 发布于2018-07-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是断言,用于给单片机程序的异常处理,当单片机出现异常的时候就会进入这个中断服务函数处理,不过一般都是不需要用到的。

    • 发布于2018-07-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是做一个条件的判断,检查你的输入参数是否符合条件
    • 发布于2018-08-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 断言机制,主要是检测你的输入参数是否符合函数的条件
    • 发布于2018-08-18
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

assert_param是用来做什么的?