Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

STM32F4 и RTC

Непрочитано 21.09.2017, 23:51  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию STM32F4 и RTC

Помогите пожалуйста. Часы тикают, но не происходит прерывание... На F100 помню было очень удобно, там хорошо реализовано прерывание каждую секунду. А на F4 такого нет, приходится делать через ALARM.

Код:
void RTC_Alarm_IRQHandler(){
	if(RTC-›ISR & RTC_ISR_ALRAF){
		RTC-›ISR = ~RTC_ISR_ALRAF;
		GPIOB-›ODR ^= 0x4000;
	}
}

void rtc_ini(void){
	RCC-›APB1ENR |= RCC_APB1ENR_PWREN;
	PWR-›CR |= PWR_CR_DBP; //Open access to Backup regs
	RCC-›BDCR |= RCC_BDCR_BDRST;
	RCC-›BDCR &= ~RCC_BDCR_BDRST;
	RCC-›BDCR |= RCC_BDCR_LSEON;
	while(!(RCC-›BDCR & RCC_BDCR_LSERDY)){}
	RCC-›BDCR |= RCC_BDCR_RTCSEL_0;
	RCC-›BDCR |= RCC_BDCR_RTCEN;
	RTC_WaitForSynchro();
	RTC-›WPR = 0xCA; //Open access to RTC
	RTC-›WPR = 0x53; //Open access to RTC
	RTC-›CR &= ~RTC_CR_FMT;	//24h format		
	RTC-›PRER |= 0xFF;
	RTC-›PRER |= (uint32_t)(0x7F ‹‹ 16);	
	//Alarm
	RTC-›CR &= ~RTC_CR_ALRAE;
	while(!(RTC-›ISR & RTC_ISR_ALRAWF)){}	
	RTC-›ALRMAR |= RTC_ALRMAR_MSK1 | RTC_ALRMAR_MSK2 | RTC_ALRMAR_MSK3;
	RTC-›ALRMAR |= RTC_ALRMAR_SU_0 | RTC_ALRMAR_SU_1;	
	RTC-›CR |= RTC_CR_ALRAE;
	RTC-›CR |= RTC_CR_ALRAIE;
  RTC-›ISR = ~RTC_ISR_ALRAF;
	RTC-›WPR = 0xFF; //Close access to RTC
	NVIC_EnableIRQ(RTC_Alarm_IRQn);	
}
вот сюда RTC-›ALRMAR |= RTC_ALRMAR_SU_0 | RTC_ALRMAR_SU_1; я подставлял разные значения. Не помогает. Что-то упустил, подскажите пожалуйста, что?
Реклама:
supercelt вне форума  
Непрочитано 22.09.2017, 00:31  
Hives
Гражданин KAZUS.RUN
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32F4 и RTC

В чипах F4 прерывание от часов замаплено куда-то на линию EXTI, смотри референс на свой чип (примерно на EXTI-18 кажется)
Hives вне форума  
Непрочитано 23.09.2017, 00:42  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: STM32F4 и RTC

Заработало

Код:
void RTC_Alarm_IRQHandler(){
	if(RTC-›ISR & RTC_ISR_ALRAF){
		RTC-›ISR = ~RTC_ISR_ALRAF;
		EXTI-›PR = ~EXTI_PR_PR17;
		GPIOB-›ODR ^= 0x4000;
	}
}

void rtc_ini(void){
	RCC-›APB1ENR |= RCC_APB1ENR_PWREN;
	PWR-›CR |= PWR_CR_DBP; //Open access to Backup regs
	RCC-›BDCR |= RCC_BDCR_BDRST;
	RCC-›BDCR &= ~RCC_BDCR_BDRST;
	RCC-›BDCR |= RCC_BDCR_LSEON;
	while(!(RCC-›BDCR & RCC_BDCR_LSERDY)){}
	RCC-›BDCR |= RCC_BDCR_RTCSEL_0;
	RCC-›BDCR |= RCC_BDCR_RTCEN;
	RTC_WaitForSynchro();
	RTC-›WPR = 0xCA; //Open access to RTC
	RTC-›WPR = 0x53; //Open access to RTC
	RTC-›CR &= ~RTC_CR_FMT;	//24h format		
	RTC-›PRER |= 0xFF;
	RTC-›PRER |= (uint32_t)(0x7F ‹‹ 16);	
	//Alarm A Every 1 second
	//RTC-›ISR = ~RTC_ISR_ALRAF; //STM32 is stuck
  EXTI-›PR = EXTI_PR_PR17;
	EXTI-›IMR |= EXTI_IMR_MR17;
	EXTI-›EMR &= ~EXTI_EMR_MR17;
	EXTI-›RTSR |= EXTI_RTSR_TR17;	
	NVIC_EnableIRQ(RTC_Alarm_IRQn);
	RTC-›CR &= ~RTC_CR_ALRAE;
	while(!(RTC-›ISR & RTC_ISR_ALRAWF)){}	
	RTC-›ALRMAR |= RTC_ALRMAR_MSK1 | RTC_ALRMAR_MSK2 | RTC_ALRMAR_MSK3 | RTC_ALRMAR_MSK4; //Alarm every 1 second
	RTC-›ALRMAR |= RTC_ALRMAR_SU_0; // 1 second in BCD format	
	RTC-›CR |= RTC_CR_ALRAE;
	RTC-›CR |= RTC_CR_ALRAIE;
	RTC-›WPR = 0xFF; //Close access to RTC	
}
Только странно, в даташите сказано, перед настройкой аларм сбросить флаг прерывания, хотя он и так там не стоит . RTC-›ISR = ~RTC_ISR_ALRAF;. Если поставить эту строчку перед алармом, то МК зависает
supercelt вне форума  
Непрочитано 23.09.2017, 10:57  
Hives
Гражданин KAZUS.RUN
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32F4 и RTC

маладец, всего 4 ошибки в коде.
1. после включения тактирования надо делать паузу на неск тактов
2. перед выборкой источника тактирования RTC надо маской чистить место под бит
3. при настройке часов надо переходить в режим настройки, видимо поэтому и виснет
4. сброс битов прерывания делается прямой а не инверсной маской в EXTI и прочих
это что сразу в глаза бросилось...
Hives вне форума  
Непрочитано 23.09.2017, 20:34  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: STM32F4 и RTC

Сообщение от Hives Посмотреть сообщение
маладец, всего 4 ошибки в коде.
1. после включения тактирования надо делать паузу на неск тактов
2. перед выборкой источника тактирования RTC надо маской чистить место под бит
3. при настройке часов надо переходить в режим настройки, видимо поэтому и виснет
4. сброс битов прерывания делается прямой а не инверсной маской в EXTI и прочих
это что сразу в глаза бросилось...
А можно подробнее про пункт 2?
И по п. 4. Про EXTI, согласен, в даташите rc_w1. Что значит запись 1. А вот в RTC_ISR - rc_w0. Значит здесь-то ноль записывать?
supercelt вне форума  
Непрочитано 23.09.2017, 22:00  
Hives
Гражданин KAZUS.RUN
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32F4 и RTC

2. как то так
RCC-›BDCR = (RCC-›BDCR & (~RCC_BDCR_RTCSEL)) | RCC_BDCR_RTCSEL_0;
выборка источника RTC независимо от того что было до этого.
4. регистр RTC_ISR чистится записью нолей, правильно.
Hives вне форума  
Непрочитано 23.09.2017, 23:00  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: STM32F4 и RTC

Спасибо) осталось только одна загвоздка, не тикает от батарейки, при включении сбрасывает все по нулям(
supercelt вне форума  
Непрочитано 23.09.2017, 23:49  
Hives
Гражданин KAZUS.RUN
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32F4 и RTC

а сброс бакап домена убрать из кода не догадался?
Hives вне форума  
Сказали "Спасибо" Hives
supercelt (24.09.2017)
Непрочитано 24.09.2017, 00:18  
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: STM32F4 и RTC

Сообщение от Hives Посмотреть сообщение
а сброс бакап домена убрать из кода не догадался?
О, спасибо. Убрал
//RCC-›BDCR |= RCC_BDCR_BDRST;
//RCC-›BDCR &= ~RCC_BDCR_BDRST;
теперь тикают от батарейки. Тогда почему в большинстве уроков про rtc есть эти строки? зачем они тогда нужны?
supercelt вне форума  
Непрочитано 24.09.2017, 00:52  
Hives
Гражданин KAZUS.RUN
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: STM32F4 и RTC

уроки писали идиоты, что еще сказать.
Hives вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SDIO на STM32F4 Discovery TmYAG ARM 4 12.10.2016 11:21
RTC - уход мене минуты в год picavr STM8 9 26.07.2015 19:46
Точность RTC STM32F407VG в режиме LSE (внешний кварц 32.768) vvv998 ARM 38 04.12.2014 12:48
Помогите запустить RTC в LPC1768 Chudilo Микроконтроллеры, АЦП, память и т.д 3 28.05.2012 02:24
Вопросик по RTC в LPC23xx serb-radio Микроконтроллеры, АЦП, память и т.д 15 25.05.2011 19:49


Часовой пояс GMT +4, время: 05:39.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.