在STM32的固件库和供给的例程中,处处都能够见到assert_param()的运用。假如翻开任何一个例程中的stm32f10x_conf.h文件,就能够看到实践上assert_param是一个宏界说;
在固件库中,它的效果便是检测传递给函数的参数是否是有用的参数。
所谓有用的参数是指满意规则规模的参数,比方某个参数的取值规模只能是小于3的正整数,假如给出的参数大于3,
则这个assert_param()能够在运转的程序调用到这个函数时陈述过错,使程序员能够及时发现过错,而不用比及程序运转成果的过错而大费周折。
这是一种常见的软件技术,能够在调试阶段协助程序员快速地扫除那些显着的过错。
它确真实程序的运转上献身了功率(但只是在调试阶段),但在项目的开发上却协助你提高了功率。
当你的项目开发成功,运用release形式编译之后,或在stm32f10x_conf.h文件中注释掉对USE_FULL_ASSERT的宏界说,一切的assert_param()查验都消失了,不会影响终究程序的运转功率。
在履行assert_param()的查验时,假如发现参数犯错,它会调用函数assert_failed()向程序员陈述过错,在任何一个例程中的main.c中都有这个函数的模板,如下:
void assert_failed(uint8_t* file, uint32_t line)
{
while (1)
{}
}
你能够依照自己运用的环境需求,增加恰当的句子输出过错的信息提示,或修正这个函数做出恰当的过错处理。
1、STM32F10xD.LIB是DEBUG形式的库库文件。
2、STM32F10xR.LIB是Release形式的库库文件。
3、要挑选DEBUG和RELEASE形式,需求修正stm32f10x_conf.h的内容。
4、要挑选DEBUG和RELEASE形式,也能够在Options,C/C++,Define里填入DEBUG的预界说。
5、假如把库参加项目,则不需求将ST的库源文件参加项目,比较便利。
【实践直接屏蔽掉了,没有运用该功用,可是感觉应该了解一下】