历史上的今天
今天是: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)
{
}
}
史海拾趣
|
l 前言 锁相环(PLL)的理论与研究日趋完善,应用范围遍及整个电子技术领域,如信号处理,调制解调.时钟同步,倍频,频率综合等都应用到了锁相环技术。随着集成电路技术的发展,集成锁相环和数字锁相环技术日趋成熟,不仅能够制成频 ...… 查看全部问答> |
|
关于PIC MPLAB 为什么编译失败不提示错误位置(无错误报告) mplab+picc编译器 编译失败后 为什么不提示错误位置,错误需要自己一个字一个字的找,该怎么设置编译器选项呢,刚接触PIC请各位帮忙解释一下 … 查看全部问答> |
|
用微软自带的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内存 现在的问题是,播放状态下做其他操作时声音会很卡,随着内存被占用的增大卡的现象会越严重,而不用其他软件时表现会好!!!。我认为以上核心配置在多媒体表现上应当不存在问题的 ...… 查看全部问答> |
|
我用的芯片是STM8S207RBT6,Flash是128K,现在我想对芯片的Flash进行操作,大概情况如下: unsigned long FlashAddr; FlashAddr = 0x00018000; FLASH_PUKR = 0x56;//Flash解锁 FLASH_PUKR = 0xAE;//Flash解锁 FLASH_CR1 |= MASK_FLASH_ ...… 查看全部问答> |
|
起因配电脑的时候什么不懂,没串口并口。后来发现主板上有外置的串并口,买了两根延长线,串口可以用,并口不可连接jtag(LPC2131开发板)。 1开发板接到别人的并口可以连接上,说明开发板硬件没坏。 2电脑并口设置spp、ecp、epp都设置过,并口地址 ...… 查看全部问答> |
|
大家好: 这个电路好像是一个鉴相器,它能够将阻抗 Z 的实部(R)和虚部(Xc)分离出来变成直流电压输出。 以下是我理解的部分: 左上角的 U4C 和 U4D 放大阻抗 Z 两端的电压,输出 A,B 两信号,这是电压向量。 下面 3 级 OP 组成的仪放电路 ...… 查看全部问答> |




