while(tmp_mm == 0xFF)
{
tmp_mm = usart_input_threshold(rtc_buf[18], 59);
rtc_alarm.alarm_minute = tmp_mm;
}
while(tmp_ss == 0xFF)
{
tmp_ss = usart_input_threshold(rtc_buf[19], 59);
rtc_alarm.alarm_second = tmp_ss;
}
rtc_flag_clear(RTC_STAT_ALRM0F);
exti_flag_clear(EXTI_17);
/* RTC alarm configuration */
rtc_alarm_config(RTC_ALARM0, &rtc_alarm);
nvic_irq_enable(RTC_Alarm_IRQn, 3, 0);
rtc_alarm_enable(RTC_ALARM0);
/* RTC alarm interrupt configuration */
exti_init(EXTI_17,EXTI_INTERRUPT, EXTI_TRIG_RISING);
rtc_interrupt_enable(RTC_INT_ALARM0);
}
uint8_t usart_input_threshold(uint8_t buffer, uint32_t value)
{
uint32_t index = 0;
uint32_t bcd_data = 0;
bcd_data = HEXtoBCD(buffer);
index = (bcd_data & 0x0F) + ((bcd_data >> 4) * 10);
if (index > value)
{
printf("\r\n please input a valid number between 0 and %d \r\n", value);
return 0xFF;
}
return bcd_data;
}
|