Использую микроконтроллер stm8L051F3 и StdPeriph_Driver. В качестве источника тактовой частоты для данного микроконтроллера выбран генератор HSI. Для тактирование модуля RTC дополнительно включается LSI. Я хотел бы что бы модуль RTC генерировал прерывание WakeUp с частотой около 1 раз в минуту. Так вот из этого ничего не получается.
Частота прерываний постоянно одна и таже = около 1Гц.
Вот код
CODE
//разрешаем переключение источника тактовой частоты
CLK_SYSCLKSourceSwitchCmd(ENABLE);
//включаем LSI
CLK_LSICmd(ENABLE);
//ждем пока LSI запустится
while (CLK_GetFlagStatus(CLK_FLAG_LSIRDY) == RESET);
//устанавливаем делитель частоты
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_16);
//запрещаем переключение источника тактовой частоты
CLK_SYSCLKSourceSwitchCmd(DISABLE);
//выбираем в качестве источника тактирования для RTC частоту LSI/64
CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_64);
//тактируем блок RTC
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
//частота для тактирования WakeUp уменьшается в 16 раз
RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);
//разрешение прерывания от WakeUp
RTC_ITConfig(RTC_IT_WUT, ENABLE);
//устанавливаем длительность таймера WakeUp
RTC_SetWakeUpCounter(100);
//разрешаем работу таймера WakeUp
RTC_WakeUpCmd(ENABLE);
asm("RIM");
Почему частота прерываний не зависит от функции RTC_SetWakeUpCounter(100);?