stm8 闹钟设定时死机,关闭看门狗就不死机。最后发现库函数有bug。
在库函数stm8l15x_rtc.c中加入下面红色代码。其实原理很简单,等待寄存器设置完成的时候,超时了。。
ErrorStatus RTC_AlarmCmd(FunctionalState NewState)
{
__IO uint16_t alrawfcount = 0;
ErrorStatus status = ERROR;
uint8_t temp1 = 0;
/* Check the parameters */
assert_param(IS_FUNCTIONAL_STATE(NewState));
/* Disable the write protection for RTC registers */
RTC_WriteProtectionCmd(DISABLE);
/* Configure the Alarm state */
if (NewState != DISABLE)
{ /*Enable the Alarm*/
RTC->CR2 |= (uint8_t)(RTC_CR2_ALRAE);
status = SUCCESS;
}
else
{ /* Disable the Alarm */
RTC->CR2 &= (uint8_t)~(RTC_CR2_ALRAE) ;
/* Wait until ALRxWF flag is set */
temp1 = (uint8_t)(RTC->ISR1 & RTC_ISR1_ALRAWF);
while ((alrawfcount != ALRAWF_TIMEOUT) &&am