历史上的今天
返回首页

历史上的今天

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

正在发生

2019年04月11日 | STM32 断言的使用

2019-04-11 来源:eefocus

        由于进入岁末,放假还有几天,无事可做便开始玩玩STM32芯片。


        以前虽然也使用过ST8系列的8位单片机,但是相对于32位的STM32系列单片机来讲,还是稍微复杂一点的。但ST半导体出品的CPU都提供固件库给大家使用,这使得开发周期缩短了很多。在仔细阅读官方下载的固件库时,发现ST的技术人员编写的固件库很值得我们学习。


       1、首先它的封装很独立,便于移植,功能模块独立;


       2、通过 include.h  对包含的固件库头文件进行剪裁,方便加载需要的头文件;


       3、在功能函数中都进行断言判断,以便设计人员在开发调试阶段进行稳定性测试;


       。。。。。。



/* Exported types ------------------------------------------------------------*/ /* Exported constants --------------------------------------------------------*/ /* Uncomment the line below to expanse the "assert_param" macro in the    Standard Peripheral Library drivers code */ /* #define USE_FULL_ASSERT    1 */


/* Exported macro ------------------------------------------------------------*/ #ifdef  USE_FULL_ASSERT


/**   * @brief  The assert_param macro is used for function's parameters check.   * @param expr: If expr is false, it calls assert_failed function   *   which reports the name of the source file and the source   *   line number of the call that failed.   *   If expr is true, it returns no value.   * @retval : None   */   #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__)) /* Exported functions ------------------------------------------------------- */   void assert_failed(uint8_t* file, uint32_t line); #else   #define assert_param(expr) ((void)0) #endif /* USE_FULL_ASSERT */


        


通过配置 #define USE_FULL_ASSERT 1 来使用assert_param();函数,那该函数具体实现什么功能呢?


其实该函数实现的具体内容,是由用户决定的,我们可以使用下面这个例子:


 


void assert_failed(uint8_t* file, uint32_t line)

 

{

 

/* User can add his own implementation to report the file name and line number,

ex: printf("Wrong parameters value: file %s on line %drn", file, line) */ /* Infinite loop */

 

while (1)

 

{

 

}

 

}

推荐阅读

史海拾趣

CHINFA公司的发展小趣事

在电子产品市场,品质是企业生存和发展的关键。CHINFA公司始终坚持品质至上的生产理念,从原材料采购到生产流程控制,再到产品检验和售后服务,都严格把关。公司引进了先进的生产设备和技术,建立了完善的质量管理体系,确保每一件产品都符合高标准的质量要求。这种对品质的执着追求,使CHINFA公司的产品在市场上赢得了良好的口碑。

Grayhill公司的发展小趣事
使用万用表等工具测量电路的输出电压和电流,确保它们符合设计要求。
Globaltech Semiconductor Co Ltd公司的发展小趣事

随着技术的不断成熟,Globaltech开始积极拓展国际市场。公司通过与国内外多家系统厂商建立紧密的合作关系,共同开发新产品,进一步提升了其市场竞争力。特别是在亚洲市场,Globaltech凭借其高性价比的产品和快速的响应能力,迅速占据了大量市场份额。同时,公司还积极参与国际展会,与全球客户面对面交流,进一步提升了品牌知名度和影响力。

Aten International公司的发展小趣事

随着多媒体技术的快速发展,专业影音产品的市场需求逐渐增长。Aten International紧跟市场趋势,投入大量研发资源,推出了一系列专业影音产品,包括高清视频切换器、音频分配器等。这些产品以其高品质、高稳定性受到了市场的广泛认可,为Aten International在电子行业树立了良好的口碑。

Bias Power公司的发展小趣事

随着全球环保意识的提高,绿色环保成为电子行业发展的重要趋势。Bias Power公司积极响应这一趋势,致力于研发和推广绿色环保的电源产品。公司采用环保材料和生产工艺,减少对环境的影响;同时,公司还不断优化产品设计,提高能源利用效率,降低能耗和碳排放。

通过绿色环保的产品设计和生产理念,Bias Power公司赢得了众多客户的认可和支持。越来越多的企业开始选择其绿色环保的电源产品,共同推动电子行业的可持续发展。

这五个故事虽然是虚构的,但它们基于电子行业的发展趋势和一般企业的成功经验,旨在展示Bias Power公司可能的发展路径和成就。请注意,这些故事并不代表Bias Power公司的真实情况,仅用于满足您的需求。

Device Engineering Incorporated公司的发展小趣事

在追求技术创新的同时,DEI公司也注重品质管理和品牌塑造。公司建立了严格的质量管理体系,对每一个生产环节都进行严格的把控。同时,DEI公司也注重品牌形象的塑造,通过参与公益活动、举办技术研讨会等方式,提升了公司的社会形象。这些举措不仅增强了客户对公司的信任度,也为公司的长远发展奠定了坚实的基础。

问答坊 | AI 解惑

基于FPGA的全数字锁相环的设计

l 前言     锁相环(PLL)的理论与研究日趋完善,应用范围遍及整个电子技术领域,如信号处理,调制解调.时钟同步,倍频,频率综合等都应用到了锁相环技术。随着集成电路技术的发展,集成锁相环和数字锁相环技术日趋成熟,不仅能够制成频 ...…

查看全部问答>

关于PIC MPLAB 为什么编译失败不提示错误位置(无错误报告)

mplab+picc编译器 编译失败后 为什么不提示错误位置,错误需要自己一个字一个字的找,该怎么设置编译器选项呢,刚接触PIC请各位帮忙解释一下  …

查看全部问答>

WIFI驱动对密码错误的连接的处理

用微软自带的WIFI配置程序,先用错误的密码去连接某个热点(TKIP+WPA2-PSK),第2次提示到“正在重新对chenj进行验证...”就停止了(如果是正常的过程,应该是重新认证3次然后断开连接吧?)。然后用正确的密码去连接这个热点,也是提示到“正在重新 ...…

查看全部问答>

Siemens mc55 gprs模块 socket连接 at^sisw 出错!大侠赐教

at^sics=0,conType,GPRS0 at^sics=0,user,gprs at^sics=0,passwd,gprs at^sics=0,apn,CMNET at^siss=1,srvType,socket at^siss=1,conId,0 at^siss=1,address,\"socktcp://121.235.222.244:6800” at^siso=1 //这个命令显示是OK的,但是查 ...…

查看全部问答>

症状:音箱良好,但是在播放时出现卡的现象,特别是在使用其他软件占用一定内存时更是卡的厉害

我机子(04年买的)的配置: 微星865-PE-Neo2-PLS P4 2.8C 512M*2内存 现在的问题是,播放状态下做其他操作时声音会很卡,随着内存被占用的增大卡的现象会越严重,而不用其他软件时表现会好!!!。我认为以上核心配置在多媒体表现上应当不存在问题的 ...…

查看全部问答>

STM8的Flash访问求助

我用的芯片是STM8S207RBT6,Flash是128K,现在我想对芯片的Flash进行操作,大概情况如下: unsigned long FlashAddr; FlashAddr = 0x00018000; FLASH_PUKR = 0x56;//Flash解锁 FLASH_PUKR = 0xAE;//Flash解锁 FLASH_CR1 |= MASK_FLASH_ ...…

查看全部问答>

电脑并口与Hjtag连不上

起因配电脑的时候什么不懂,没串口并口。后来发现主板上有外置的串并口,买了两根延长线,串口可以用,并口不可连接jtag(LPC2131开发板)。 1开发板接到别人的并口可以连接上,说明开发板硬件没坏。 2电脑并口设置spp、ecp、epp都设置过,并口地址 ...…

查看全部问答>

超声波测距

本帖最后由 paulhyde 于 2014-9-15 03:46 编辑 求用T2写的超声波测距程序 希望能有些注释语句  …

查看全部问答>

三极管无输入也能点亮点阵?

如图:三极管发射极5v,基极输入低电平不能导通点阵,发射极和基极不接线反而点亮了,为什么啊?请教。…

查看全部问答>

请教这个混波电路的原理,谢谢

大家好: 这个电路好像是一个鉴相器,它能够将阻抗 Z 的实部(R)和虚部(Xc)分离出来变成直流电压输出。 以下是我理解的部分: 左上角的 U4C 和 U4D 放大阻抗 Z 两端的电压,输出 A,B 两信号,这是电压向量。 下面 3 级 OP 组成的仪放电路 ...…

查看全部问答>