|
做一个小试验,安装了例外检查,结果发现官方库的一个例外。 stm32f407vetx,STM32Cube_FW_F4_V1.21.0/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rtc.c 的HAL_RTC_SetDate函数中,大约652行,应该是明显的错误。简化版本为:
此时,datetmpreg为0,会引发两次assert_param例外。 怀疑此处参数检查本意是检查传入的年月日是否正确,但意外检查了一个临时变量,因为月,日为0,不符合要求。 估计应该替换为 assert_param(IS_RTC_MONTH(sDate->Month)); assert_param(IS_RTC_DATE(sDate->Date)); 之所以错误比较隐蔽,一般情况下,生成的void assert_failed(uint8_t* file, uint32_t line)函数是空白的,自动被忽略了。 恰巧我实现了该函数,导致引发了一系列异常输出才偶然发现。 |
微信公众号
手机版