本帖最后由 740071911 于 2017-7-14 11:22 编辑
STM32中 assert_param() 的使用 在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。 所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_param() 可以在运行的程序调用到这个函数时报告错误,使程序员可以及时发现错误,而不必等到程序运行结果的错误而大费周折。 这是一种常见的软件技术,可以在调试阶段帮助程序员快速地排除那些明显的错误。 下图是在stm32库函数中遇到的函数assert_param()
下图检测传递给函数的参数是否是有效
这个宏定义的作用就是检查参数 PERIPH,判断参数PERIPH是否为GPIOX(A...G)基址中的一个,只要有一个为真则其值为真,否则为假,不用多说,这是C语言中基本的逻辑运算。
当然这个库函数也用的好,首先对PERIPH进行取址,就是 &PERIPH,然后对这个地址强制转化为32位的指针,即前面加(uint32_t*),再然后通过*进行访问这个地址(指针)中的内容。
|