RTC可以实现报警中断,这里编写了一个报警时间设置
-
/********************************************************************************************************* * FunctionName : RTCSetAlarmClock() * Description : 设置报警时间 * EntryParameter : pClock - 时钟值,顺序:秒,分,时,周,日,月,年,采用BCD码 * ReturnValue : None *********************************************************************************************************/ void RTCSetAlarmClock(uint8 *clock) { uint16 clockTmp[7];
// 把BCD码转换成十进制 *(clockTmp+0) = ((*(clock+6)>>4) * 10) + (*(clock+6) & 0x0F) + 2000; // 年 *(clockTmp+1) = ((*(clock+5)>>4) * 10) + (*(clock+5) & 0x0F); // 月 *(clockTmp+2) = ((*(clock+4)>>4) * 10) + (*(clock+4) & 0x0F); // 日 *(clockTmp+3) = ((*(clock+3)>>4) * 10) + (*(clock+3) & 0x0F); // 周 *(clockTmp+4) = ((*(clock+2)>>4) * 10) + (*(clock+2) & 0x0F); // 时 *(clockTmp+5) = ((*(clock+1)>>4) * 10) + (*(clock+1) & 0x0F); // 分 *(clockTmp+6) = ((*(clock+0)>>4) * 10) + (*(clock+0) & 0x0F); // 秒
// 写入设置时间 LPC_RTC->ALYEAR = *(clockTmp+0); // 年 LPC_RTC->ALMON = *(clockTmp+1); // 月 LPC_RTC->ALDOM = *(clockTmp+2); // 日
LPC_RTC->ALDOW = *(clockTmp+3); // 周
LPC_RTC->ALHOUR = *(clockTmp+4); // 时 LPC_RTC->ALMIN = *(clockTmp+5); // 分 LPC_RTC->ALSEC = *(clockTmp+6); // 秒 }
复制代码
需要注意报警比较,即初始化中对报警的设置,一般(0x01 << AMRDOY ) | // 日期值(1~366)是不参与比较的。 |