打印
[STM32F0]

看库函数时遇到的问题:宏定义和assert_param函数

[复制链接]
811|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
viseng|  楼主 | 2015-1-11 21:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   assert_param(IS_RCC_AHB_PERIPH(RCC_AHBPeriph));
   #define IS_RCC_AHB_PERIPH(PERIPH) ((((PERIPH) & 0xFE81FFAA) == 0x00) && ((PERIPH) != 0x00))
刚把按键输入检测和点灯程序实现,在看细节时遇到了一些问题
上面这两个是什么意思?这个宏定义和上面的函数,有高手帮我系统讲一下不?或者给个之前分析过的帖的链接
沙发
viseng|  楼主 | 2015-1-12 14:10 | 只看该作者
这个问题已经解决

使用特权

评论回复
板凳
airwill| | 2015-1-13 09:39 | 只看该作者
assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。
所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_param()可以在运行的程序调用到这个函数时报告错误,使程序员可以及时发现错误,而不必等到程序运行结果的错误而大费周折。
这是一种常见的软件技术,可以在调试阶段帮助程序员快速地排除那些明显的错误。它确实在程序的运行上牺牲了效率(但只是在调试阶段),但在项目的开发上却帮助你提高了效率。当你的项目开发成功,用release模式编译之后,或在stm32f10x_conf.h文件中注释掉对USE_FULL_ASSERT的宏定义,所有的assert_param()检验都消失了,不会影响最终程序的运行效率。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

410

帖子

1

粉丝