STM32库中的Assert断言有必要使用吗?

嵌入式ARM 2020-07-15 00:00


很多小伙伴都不清楚什么是Assert,今天就再来分享一下关于Assert的内容。

1、写在前面


有经验的工程师都知道,随着软件版本的迭代,或者需求不断变更,我们的代码就会变得越来越“臃肿”。

在编码的过程中,如果没有注重一些细节,你的代码就可能存在许多隐藏的Bug。

那么,我们如何找出这些隐藏的Bug呢?

今天就说其中的一点:Assert断言。

2、关于Assert断言


什么是Assert断言?

编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式

断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。

可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言

同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。
---来自百度百科


这里的概念,可能不好理解,简单举一个例子来说明吧。

有这么一个数组和函数:

int Array[5] = {0xA1, 0xB2, 0xC3, 0xD4, 0xE5};int Fun(char i){ return Array[i];}

如果我们函数中不加Assert断言语句,你觉得直接调用会这个函数会有风险吗?

假如这么调用:

int a;a = Fun(8);

很明显,就这么调用,会出错,且我们不容易发现错误在哪里。

但是,假如添加有Assert断言语句,错误就能一下找出来。

3Assert断言实际应用

其实,Assert断言在很多标准的代码中,基本都有。我们还是拿STM32的代码来说明吧。


不管是STM32标准外设库、还是HAL、LL库源代码里面都有Assert断言机制。

不知道大家有没有注意过assert_param函数

1.拿STM32最常见的GPIO初始化函数为例

A.标准外设库GPIO初始化:


B.HAL库GPIO初始化:


相信大家都看到过STM32库中的参数断言语句,他的作用就是用于检查函数传入参数是否正确

2.STM32参数断言使能

STM32的assert_param参数断言函数是没有使能的,如下:

#define assert_param(expr) ((void)0)

也就是assert_param不起作用。

如果需要使用,就需要对其使能才行。

A.标准外设库


B.HAL库

道理一样,使能ASSERT,可以手动:

#define USE_FULL_ASSERT 1U

也可以通过STM32CubeMX配置:


3.代码大小

添加Assert断言之后,代码量肯定要增加,比如:

不使能assert_param代码量:

Code=5350 RO-data=360 RW-data=16 ZI-data=1152

使能assert_param:

Code=8300 RO-data= 362 RW-data=16 ZI-data=1152

4.断言失败处理

断言失败,可根据实际项目需求,做出一定处理。比如:打印错误信息,存储错误日志等。

本文就讲到这里,方法教给大家,需要自己理解并消化其中内容。

-END-


本文授权转载自公众号“StrongerHuang”,作者StrongerHuang




推荐阅读



【01】先学STM8,还是学STM32?
【02】STM32好找工作,所以学linux终究是错付了吗?
【03】锂电池充电慢?教你用 STM32 制作锂电池快充充电器
【04】stm32几种低功耗模式的实现和差别
【05】如何让STM32优雅地“说”hello world?


免责声明:整理文章为传播相关技术,版权归原作者所有,如有侵权,请联系删除
嵌入式ARM 关注这个时代最火的嵌入式ARM,你想知道的都在这里。
评论 (0)
  • 在智能家居与物联网(IoT)技术快速发展的背景下,语音播报功能已成为烟雾报警器等安防设备提升用户体验的核心技术之一。厂家凭借其WTV、WTN、WT588F及WT2605C系列语音芯片,推出了三大烟雾报警器语音方案,覆盖传统、高集成度与智能化需求,为不同场景提供灵活选择。以下从技术特性、应用场景及行业价值三方面展开分析。一、方案对比与技术特性 方案类型核心芯片型号技术优势局限性适用场景传统分立方案WTN6/WT588F/WTV系列音质纯净,模块化设计便于维护;兼容性强,支持外接功放优化音
    广州唯创电子 2025-04-21 08:53 63浏览
  •   电磁信号模拟系统深度解析   一、系统概述   北京华盛恒辉电磁信号模拟系统作为半实物仿真测试系统,广泛应用于无线通信、军事训练等多领域。它通过软硬件结合,构建逼真电磁信号环境,用于测试电子设备在复杂电磁干扰下的性能表现。   应用案例   目前,已有多个电磁信号模拟系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁信号模拟系统。这些成功案例为电磁信号模拟系统的推广和应用提供了有力支持。   二、系统组成   装备模型库:涵盖雷达、通信设备等各类装备平台及电子装
    华盛恒辉l58ll334744 2025-04-21 10:48 17浏览
  •   电磁环境模拟软件系统深度解读   北京华盛恒辉电磁环境模拟软件系统是专业的技术工具,可生成、捕捉与分析电磁信号,为电气和电子设备搭建仿真测试环境。以下从功能、技术特性、应用场景、主流软件及发展趋势展开介绍。   应用案例   目前,已有多个电磁环境模拟软件系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁环境模拟软件系统。这些成功案例为电磁环境模拟软件系统的推广和应用提供了有力支持。   一、核心功能   电磁环境模拟   信号生成与处理   场景构建与仿真
    华盛恒辉l58ll334744 2025-04-21 10:21 28浏览
  •   智慧华盛恒辉国有单位招标标书查重系统介绍   1、建设国有单位招标标书查重系统的重大意义   (1)保障招标过程的公正性与透明度   在国有单位复杂的招标环境中,标书查重系统犹如一把利剑,精准切割出公平竞争的道路。该系统利用自动化比对与检测技术,快速揭露投标文件中潜藏的相似或重复内容,有效遏制了围标、串标及抄袭等恶劣行为,为招标过程披上了一层公正与透明的外衣。这不仅减少了人为干预的空间,更保障了合法投标人的权益,维护了市场的健康秩序,让每一次招标都成为真正的实力较量。   应用案例
    华盛恒辉l58ll334744 2025-04-20 23:07 52浏览
  • 85RC16是一款铁电存储器(FRAM),具有低功耗、高耐久性、快速写入等优点。通过芯片文档,可以看到对比常用的eeprom它的一些优势与24C16的对比读写速度 :85RC16的读写速度更快,可达到与I2C总线速率相匹配的水平,没有像24C16那样的写操作延迟和页写限制,能够实现真正的随机字节写入,且不需要等待写周期完成,适合需要频繁、快速读写的应用场合。写入耐久性 :85RC16的写入耐久性更高,可承受的写入次数远超24C16,这使得其在需要频繁更新数据的应用中更具优势,使用寿命更长。功耗
    小手凉凉 2025-04-21 10:17 11浏览
  •   北京华盛恒辉作战仿真系统软件是现代军事领域不可或缺的重要工具,用于模拟作战环境、训练人员和评估作战方案。它借助计算机技术搭建虚拟战场,支撑复杂作战场景推演分析,为军事决策提供科学依据。以下从核心功能、技术架构、应用场景和发展趋势四个方面展开解析:   应用案例   目前,已有多个作战仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润作战仿真系统。这些成功案例为作战仿真系统的推广和应用提供了有力支持。   核心功能   战场环境建模:构建逼真的虚拟战场环境,涵盖地形、
    华盛恒辉l58ll334744 2025-04-20 11:06 26浏览
  •   数字化战场:军事态势视景仿真推演系统软件解析   北京华盛恒辉军事态势视景仿真推演系统软件是现代军事领域模拟战场态势、辅助指挥决策的关键工具。伴随信息技术发展,其在提升军事训练质量、优化作战指挥决策等方面的作用愈发显著。   一、系统概述   该系统借助数字化技术,构建高精度三维战场环境,模拟各类作战场景与武器装备运行状态,为军事指挥员及作战人员打造沉浸式战场体验。系统融合地理信息系统(GIS)、计算机图形学、人工智能等多学科技术,实现战场态势实时感知、动态推演与可视化呈现。   应
    华盛恒辉l58ll334744 2025-04-20 11:24 33浏览
  •   电磁环境模拟平台系统全解析   北京华盛恒辉电磁环境模拟平台系统是通过技术手段生成、调控和再现复杂电磁环境的专用设备,广泛应用于通信、电子、航空航天、国防等领域。其核心作用是为设备研发、测试和评估提供可控的电磁环境,验证系统在复杂电磁干扰下的性能与可靠性。   应用案例   目前,已有多个电磁环境模拟平台系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁环境模拟平台系统。这些成功案例为电磁环境模拟平台系统的推广和应用提供了有力支持。   一、系统构成   信号发生
    华盛恒辉l58ll334744 2025-04-21 09:40 50浏览
  •   国有单位科研项目审计管理系统解析   一、系统建设意义   北京华盛恒辉国有单位科研项目审计管理系统对科研项目管理至关重要,其意义贯穿管理效能提升、资金优化配置、科研合规推进等核心环节,深刻影响国家科技战略实施。   应用案例   目前,已有多个国有单位科研项目审计管理系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润国有单位科研项目审计管理系统。这些成功案例为国有单位科研项目审计管理系统的推广和应用提供了有力支持。   提升科研项目管理质效:作为数字化、智能化管理工
    华盛恒辉l58ll334744 2025-04-20 23:21 50浏览
  • 一、市场背景与竞争优势随着智能家居市场的爆发式增长,消费者对小家电的智能化、交互性需求显著提升。WTVxxx系列语音芯片凭借高性价比、卓越音质与功能集成度,已成为智能小家电领域的核心驱动方案。该系列芯片通过以下优势重塑行业格局:成本优化:集成MCU、语音播报、驱动控制等多功能模块,显著降低硬件成本与开发复杂度;智能化升级:支持语音交互、状态显示与智能控制,契合现代用户对高端体验的追求;快速迭代:兼容主流芯片架构,支持远程更新与硬件扩展,助力产品持续迭代。目前,WTVxxx芯片已广泛应用于扫地机器
    广州唯创电子 2025-04-21 08:32 61浏览
  •   智慧华盛恒辉国有单位科研项目审计管理系统介绍   1、建设国有单位科研项目审计管理系统的重大意义   其深远意义体现在科研项目管理的核心环节,不仅关乎管理效能与成果质量的飞跃,还深刻影响着科研资金的优化配置、科研行为的规范性以及国家科技发展战略的顺利推进。   应用案例   目前,已有多个科研项目审计管理系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润科研项目审计管理系统。这些成功案例为科研项目审计管理系统的推广和应用提供了有力支持。   (1)强化科研项目管理的效
    华盛恒辉l58ll334744 2025-04-20 22:54 38浏览
  •   北京华盛恒辉作战仿真系统软件平台是现代军事领域中用于模拟作战环境、评估作战方案、训练军事人员的重要工具。这些平台通过计算机技术构建虚拟战场,支持多兵种、多武器系统的协同作战仿真,为军事决策、战术训练和装备研发提供科学依据。以下从平台类型、核心技术、应用场景及发展趋势等方面进行详细介绍。   应用案例   目前,已有多个作战仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润作战仿真系统。这些成功案例为作战仿真系统的推广和应用提供了有力支持。   一、作战仿真系统软件平台
    华盛恒辉l58ll334744 2025-04-20 15:37 35浏览
  •   战略仿真推演系统设计方案   一、系统概述   1.1 系统定位   北京华盛恒辉战略仿真推演系统是面向政府、企业及军事机构的决策支持工具。它通过搭建虚拟环境,模拟真实战略场景,助力用户评估不同策略的潜在影响,优化决策流程,提升战略规划的科学性与前瞻性。   应用案例   目前,已有多个战略仿真推演系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润战略仿真推演系统。这些成功案例为战略仿真推演系统的推广和应用提供了有力支持。   二、系统架构设计   2.1 总体架
    华盛恒辉l58ll334744 2025-04-20 16:27 48浏览
  •   战略仿真推演平台是一种基于计算机技术和仿真模型构建的决策支持系统,旨在通过模拟复杂战略环境,帮助决策者评估不同战略方案的效果、预测潜在风险并优化决策过程。此类平台广泛应用于军事、经济、能源、城市规划等领域,为高层决策提供科学依据。   应用案例   目前,已有多个战略仿真推演平台在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润战略仿真推演平台。这些成功案例为战略仿真推演平台的推广和应用提供了有力支持。   一、核心功能   多维度战略建模   动态推演与情景分析   
    华盛恒辉l58ll334744 2025-04-20 16:16 51浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦