реклама на сайте
подробности

 
 
> RTC в STM32
123kill12
сообщение Oct 27 2011, 07:06
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 12-05-10
Пользователь №: 57 217



что то не могу разобраться с RTC.

схема RTC

тактирование


у меня нет LSE поэтому буду питаться от HSE/128

вот моя иницилизация его
Код
void mcu_rtc_init(void)
{
    int rtc_value = 0x00;
        
    if ((RCC->BDCR & RCC_BDCR_RTCEN) != RCC_BDCR_RTCEN)                     //      если RTC отключен
    {
        RCC->BDCR |= RCC_BDCR_RTCSEL_0 | RCC_BDCR_RTCSEL_1;             //    выбираем внешний кварц 12MHz /128 =93750 Hz.
                
                RCC->BDCR |= RCC_BDCR_BDRST;                          //    сброс
        RCC->BDCR &= ~RCC_BDCR_BDRST;
        RCC->BDCR |= RCC_BDCR_RTCEN;                    //    разрешить работу RTC
                
        RTC->CRL |= RTC_CRL_CNF;                             //    заходим в режим конфигурации
        
        RTC->PRLH = 0;
        RTC->PRLL = 2-1;                         //    93750Hz/3=31250Hz
                                        //    1/31250Hz ->0.000032c
        RTC->ALRH = 0;                            //    0.000032c*125=0.004c=4mc
        RTC->ALRL = 125;    
        
        RTC->CNTH = rtc_value >> 16;
        RTC->CNTL = rtc_value;
        
        RTC->CRH |= RTC_CRH_ALRIE;                     //    разрешение прерывания по аларму.
        NVIC->ISER[0] |= ena_RTC_GLOBAL;                //    разрешить прерывание от RTC.
        //NVIC->ISER[1] |= ena_RTC_ALARM;                //    разрешить прерывание от alarm RTC.
        
        RTC->CRL &= ~RTC_CRL_CNF;                    //    выходим из режима конфигурации

        RTC->CRL &=~RTC_CRL_RSF;                    //    запустить синхронизацию
        while((RTC->CRL & RTC_CRL_RSF) != RTC_CRL_RSF){}            //    ожидание синхронизации
    }
}


void RTC_IRQHandler(void)
{
    count4ms++;
    if(count4ms==250)
    {
        count4ms=0;
        count1s++;
        if(count1s==86400)
        {
            count1s=0;
        }
    }
}


и он повисает тут
RTC->CRL &=~RTC_CRL_RSF; // запустить синхронизацию
while((RTC->CRL & RTC_CRL_RSF) != RTC_CRL_RSF){} // ожидание синхронизации

значит часы не запускаются(((

Сообщение отредактировал 123kill12 - Oct 27 2011, 10:16
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
123kill12
сообщение Oct 27 2011, 11:28
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 12-05-10
Пользователь №: 57 217



Не пример понятно. но у меня нет LSE. есть LSI и HSE.
но все равно спасибо. завтра попробую.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016