历史上的今天
返回首页

历史上的今天

今天是:2025年04月11日(星期五)

正在发生

2019年04月11日 | stm32的断言机制(assert)的理解

2019-04-11 来源:eefocus

     在做stm32的库程序移植时出现错误“#error "Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)"”,未选择STM32F4xx 设备导致多.h文件未被载入,发现是STM32F429_439xx的宏定义未定义,解决方法是在工具魔法棒 中的C/C++页的#define栏中添加相应的宏定义。


       出现错误“.ObjectsSTM32F429IGT6_Demo.axf: Error: L6218E: Undefined symbol assert_param (referred from misc.o).”和警告“..LibrariesSTM32F4xx_StdPeriph_Driversrcstm32f4xx_wwdg.c(211): warning:  #223-D: function "assert_param" declared implicitly”,断言assert未被定义,发现是USE_STDPERIPH_DRIVER的宏定义未定义,解决方法是在工具魔法棒 中的C/C++页的#define栏中添加相应的宏定义。


      在文件stm32f4xx.h中,如果定义了USE_STDPERIPH_DRIVER,则#include “stm32f4xx_conf.h”文件,如下图



      文件stm32f4xx_conf.h包含了stm32的所有库文件和断言的定义,所以只要包含stm32f10x.h文件就能很容易的包含所有的文件文件了,需要使用assert函数时只需要定义USE_FULL_ASSERT即可。



        assert(表达式);如果表达式的值为假,整个程序将退出,并输出一条错误信息。如果表达式的值为真则继续执行后面的语句。


        如上图所示,如果USE_FULL_ASSERT未定义,则断言是assert_param(expr) ((void)0)函数, ((void)0)表示空语句的表达式,即无断言机制,对程序不产生影响,如果定义了USE_FULL_ASSERT,则assert_param(expr)函数定义为: ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)),如果表达式正确则((void)0),如果错误,则运行函数assert_failed();其中__FILE__,__LINE__是标准库函数中的宏定义,用来指示出错的行数和文件。函数assert_failed()可以自己在main.c中定义,如下:


void assert_failed(uint8_t* file, uint32_t line)

{

while(1);

}


以上,作为自己的学习记录。

推荐阅读

史海拾趣

得倍(DBIC)公司的发展小趣事

倍(DBIC)公司自创立之初,就致力于在电子行业中进行技术创新。公司投入大量资源进行研发,成功推出了一系列具有革命性的产品,如高效能芯片和智能传感器。这些产品不仅提高了生产效率,还满足了市场对智能化、高效能电子产品的需求。随着技术的不断进步,倍(DBIC)公司逐渐在行业中树立了技术领先的形象,吸引了众多合作伙伴和客户。

Comchip Technology公司的发展小趣事

品质是Comchip Technology公司的生命线。公司始终坚持严格的质量管理体系,通过ISO9001、ISO14001等多项国际质量认证,确保产品质量的稳定性和可靠性。同时,公司还建立了完善的售后服务体系,为客户提供及时、专业的技术支持和服务。

ARMKEIL Microcontroller Tools公司的发展小趣事

2005年,对于Keil公司来说是一个具有里程碑意义的年份。在这一年,英国的ARM公司看中了Keil在嵌入式系统开发工具领域的领先地位和技术实力,决定对其进行收购。收购完成后,Keil公司正式成为ARM公司的一部分,继续专注于嵌入式系统开发工具的研发和销售。这一事件标志着Keil公司进入了一个新的发展阶段,也为其未来的发展奠定了坚实的基础。

Caddell-Burns Manufacturing公司的发展小趣事

为了进一步扩大市场份额,Caddell-Burns Manufacturing公司开始积极寻求国际合作。他们与多个国家的电子制造商建立了稳定的合作关系,将产品出口到世界各地。同时,公司还参加了多个国际电子展会,展示了公司的最新产品和技术成果,吸引了众多客户的关注。这些举措不仅提升了公司的国际知名度,也为公司的长期发展奠定了坚实基础。

APTA Group Inc公司的发展小趣事

除了在经济领域的成功,APTA Group Inc还注重履行社会责任。公司积极参与环保事业,推动绿色生产,减少对环境的影响。同时,APTA还关注社会公益事业,通过捐款捐物等方式回馈社会。这些举措不仅提升了公司的社会形象,也赢得了公众的认可和尊重。


请注意,上述故事是基于假设构建的,并非APTA Group Inc的实际经历。如果您需要更具体的信息,建议直接访问该公司的官方网站或查阅相关新闻报道,以获取更准确的发展故事。

GISMA Steckverbinder GmbH公司的发展小趣事

随着技术的不断进步,GISMA持续加大研发投入,不断推出新产品以满足市场需求。其产品线从最初的几个系列扩展到如今的16个系列,涵盖了超过15000种不同类型的连接器。这些连接器不仅具有高电气性能和出色的防水性能,还能够在恶劣的水下环境中保持稳定的工作状态。GISMA的技术创新能力和产品线拓展策略,为其在电子行业中的持续发展奠定了坚实基础。

问答坊 | AI 解惑

专业人员教授如何测试MP3音质

前言 随着市场的发展,现在的MP3播放器品种越来越多,价钱也越来越实惠。也越来越多的MP3进入了用户的口袋。可以说是MP3随身听丰富了个人的世界,能随时随地随心所欲地欣赏美妙音乐。作为随身听,MP3的最终目的是还原真实的音乐。作为音响爱好者, ...…

查看全部问答>

低频数字式相位测量仪

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 低频数字式相位测量仪  …

查看全部问答>

看到一个好玩的:屁强度探测器

探测的依据是    声音  温度  浓度 …

查看全部问答>

有人熟悉NTFS格式么?

最近做一个项目,需要支持移动硬盘,移动硬盘大部分都是NTFS的格式,但是目前维护的FAT文件系统不支持, 有没人熟悉NTFS的,可以请教下…

查看全部问答>

wince中分割窗体

用vs2005开发wince sdi程序,发现没有CSplitterWnd这个类,应该如何实现分割窗体呢?…

查看全部问答>

windows xp 与 windows ce 嵌入式系统的usb通信

现有一个条形码识别掌机, 掌机系统为 windows ce.net 6.0, 有usb接口。 将掌机usb接口直接与windows vista电脑相接,不需要任何操作就可以实现通信。 但将掌机与windows xp相接,用了很多方法都不行,比如安装一个activesync 4.5,在连接 ...…

查看全部问答>

USB接口主,从控制器有什么不同?

可用于主控制的接口有CH375,SL811,还有吗?用于从控制的就多了,如PDIUSBD12,还有MCU内置,如C8051F340就内置USB控制器. 这写USB从控制器能用作主控制器吗?谢谢!…

查看全部问答>

不知道为什么uart无法使用

库文件完全一样,示例代码能运行,但是即使把示例代码完全复制到自己的工程中都不能输出正确的结果。复制到自己的项目中后,完全相同的代码但是编译后的大小要比demo工程直接编译的大一点点。一直到不到哪里出了问题。有人遇到过吗?或者给点查错的 ...…

查看全部问答>

武林学习LM3S811(五)中断按键

参考周立功的实例,实现按键中断翻转LED的功能。为的下次触摸芯片驱动做准备。 工程:…

查看全部问答>

新一代FPGA设计学习工具:Robei

美国Robei公司开发了一套全新的FPGA设计仿真工具,现在在教育界和工业界引起巨大的反响。 下面是这个软件的简单介绍: Robei FPGA仿真软件是一款世界上最小的FPGA仿真工具。该软件具备先进的图形化设计工具,代码修改,Verilog编译仿真和波形分析 ...…

查看全部问答>