Код
//-Здесь я хочу устроить прерывания с частотой 128 Гц.
SCU_APBPeriphClockConfig(__RTC,ENABLE);
RTC_DeInit();
RTC_PeriodicIntConfig(RTC_Per_128Hz);
RTC_ClearFlag(RTC_FLAG_Per);
RTC_ITConfig(RTC_IT_Per,ENABLE);
VIC_Config(RTC_ITLine, VIC_IRQ, 15);
VIC_ITCmd(RTC_ITLine, ENABLE);
SCU_APBPeriphClockConfig(__RTC,ENABLE);
RTC_DeInit();
RTC_PeriodicIntConfig(RTC_Per_128Hz);
RTC_ClearFlag(RTC_FLAG_Per);
RTC_ITConfig(RTC_IT_Per,ENABLE);
VIC_Config(RTC_ITLine, VIC_IRQ, 15);
VIC_ITCmd(RTC_ITLine, ENABLE);
Код
bool on8ms; // флаг срабатывания прерывания
void RTC_IRQHandler(void)
{//-----------------------------
vu32 sts= RTC->SR;
if((sts & RTC_FLAG_Per)>0) on8ms=true;
}
void RTC_IRQHandler(void)
{//-----------------------------
vu32 sts= RTC->SR;
if((sts & RTC_FLAG_Per)>0) on8ms=true;
}
Измерил частоту срабатывания и она получилась 64 Гц вместо ожидаемых 128. Что бы это могло значить? Проверил тот же код на других изделиях, где стоят STR912xx и старая библиотека 91xx_lib от ST- там все нормально, сколько задал- столько и получил. Где копать? Может, кто сталкивался с подобным?