电子产业一站式赋能平台

PCB联盟网

搜索
查看: 101|回复: 0
收起左侧

断言在STM32中的应用

[复制链接]
匿名  发表于 2024-11-23 17:48:00 |阅读模式
首先我们先了解一下,什么是断言?断言都有什么特点?
  断言就是我们人为定义的一个宏,用于判断一些输入参数的布尔表达式是否为预设的值的范围内,如果是就为真,否则就为假。断言就是用于检查一些函数的输入参数的合法性。一般默认情况下,断言的功能是关闭的,在debug调试模式下,将断言功能打开;在release发布模式下,将断言功能关闭,断言打开的话,会在一定程度上影响函数的执行效率。
assert() 是 C 标准库中的一个宏,定义在  头文件中。
  使用断言,可以创建更加稳定,不易出错的代码。如果在单元测试过程中,使用断言,将会非常方便。使用断言得区别于代码错误,代码错误编译就会不通过,但是断言有问题,代码编译是OK的。断言检查的就是在代码执行过程中,一些输入参数的合法性是否为真。
  断言就是在debug模式下,代码运行过程中,对函数中输入的参数进行检查。如果输入的参数违规,将进行某些操作,输出一些信息提醒,或者控制代码进入一个死循环使得代码无法继续执行下去。在release版本,是不用断言功能的。
 #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
宏定义assert_param(expr),通过一个条件判断语句,如果表达式expr的值为真,则assert_param(expr)返回(void)0,如果表达式expr的值为假,则assert_param(expr)返回assert_failed((uint8_t *)__FILE__, __LINE__)。
void assert_failed(uint8_t* file, uint32_t line);这个函数的作用就是返回调用这个函数的文件名和行数。
将输出重定位到串口

STM32中的断言


可以通过STM32CubeMX配置:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表