www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RTC mit STM32


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: latif ho (latif_h)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
hallo zusamen ich bin ganz ganz anfanger ich versuchen mit STM32 RTC ein 
ganz ein fache uhr 0 bis 12 realesieren ich weis garnicht wie kann man 
das machen

konte jemanden mir hinweis dazu geben

Autor: Jan (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Stm Library
da gibt es viele Projektbeispiele in C. Da würde ich mich an deiner 
Stelle mal durchblättern.

mfg Jan

Autor: latif ho (latif_h)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Danke jan
ich konte die folgende code von Stm Library  ich habe damit nur die RTC 
konfiguriert und die secunde erzeugt aber das ist nicht alles  ich weis 
dass ich ein main funktin brauche und wie kann ich die folgende mit main 
funtion ausfuhren

void RTC_Init(void)
{
/* CK_RTC clock selection */
RCC_APB1PeriphClockCmd( RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE 
);
PWR_BackupAccessCmd( ENABLE );  /* Allow access to BKP Domain */
BKP_DeInit(); /* Reset Backup Domain */
RCC_LSEConfig( RCC_LSE_ON ); /* Enable the LSE OSC */
while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
{} /* Wait till LSE is ready */
RCC_RTCCLKConfig( RCC_RTCCLKSource_LSE ); /* Select the RTC Clock Source
RCC_RTCCLKCmd( ENABLE ); /* Enable the RTC Clock */
RTC_WaitForSynchro(); /* Wait for RTC registers synchronization */
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask();
RTC_ITConfig( RTC_IT_SEC, ENABLE ); /* Enable the RTC Second interrupt 
*/
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask();
/* Set RTC prescaler: set RTC period to 1sec */
/* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */
RTC_SetPrescaler( 32767 );
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask();

}

RTC - ISR
> void RTC_IRQHandler(void)
> {
> if (RTC_GetITStatus(RTC_IT_SEC) != RESET)
> {
> if (getClock_state()!=0)
> {
> toogleGreen();
> DRAW_DisplayTime( 30, 30 );
> }
> }
> /* Clear the RTC Second interrupt */
> RTC_ClearITPendingBit(RTC_IT_SEC);

}

Autor: Jean Player (fubu1000)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Oje,
das kann ja keiner lesen!
void RtcConfig(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  EXTI_InitTypeDef EXTI_InitStructure;

  /* Configure EXTI Line17(RTC Alarm) to generate an interrupt on rising edge */
  EXTI_ClearITPendingBit(EXTI_Line17);
  EXTI_InitStructure.EXTI_Line = EXTI_Line17;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);

  /* 2 bits for Preemption Priority and 2 bits for Sub Priority */
  //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

  NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

  /* Enable PWR and BKP clock */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

  /* RTC clock source configuration ------------------------------------------*/
  /* Allow access to BKP Domain */
  PWR_BackupAccessCmd(ENABLE);

  /* Reset Backup Domain */
  BKP_DeInit();

  /* Enable the LSE OSC */
  RCC_LSEConfig(RCC_LSE_ON);
  /* Wait till LSE is ready */
  while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET)
  {
  }

  /* Select the RTC Clock Source */
  RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);

  /* Enable the RTC Clock */
  RCC_RTCCLKCmd(ENABLE);

  /* RTC configuration -------------------------------------------------------*/
  /* Wait for RTC APB registers synchronisation */
  RTC_WaitForSynchro();
  RTC_WaitForLastTask();

  /* Set the RTC time base to 1s */
  RTC_SetPrescaler(32767);
  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();

  /* Enable the RTC Alarm interrupt */
  RTC_ITConfig(RTC_IT_ALR, ENABLE);
  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();

  rStatus.clockStatus = RTC_CLOCK_ON;
}

Autor: Jean Player (fubu1000)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ok,
ergänzend:
--> RTC Alarm ist angeschaltet und sollte in der main refreshed werden, 
bzw die RTC flags im INT gelöscht werden. Selbstverständlich IRQ Fkt. 
eintragen.
void RtcAlarmStart(bool init)
{
  RTC_WaitForLastTask();
  if(init) {RtcConfig();}

  /* Wait till RTC Second event occurs */
  RTC_ClearFlag(RTC_FLAG_SEC);
  while(RTC_GetFlagStatus(RTC_FLAG_SEC) == RESET);

  /* Alarm in 1 second */
  RTC_WaitForLastTask();
  RTC_SetAlarm(RTC_GetCounter() + RTC_1SEC);
  /* Wait until last write operation on RTC registers has finished */
  RTC_WaitForLastTask();
  RTC_WaitForSynchro();

  rStatus.alarmStatus = RTC_ALARM_ON;
}

void RtcAlarmReload(_RTC_DURATION dur)
{
  RTC_SetAlarm(RTC_GetCounter() + dur);
  RTC_WaitForLastTask();
}

--> Abfrage der aktuellen TICKS über STM library --> RTC_GetCounter()
-->µC wird über EXTI17 aus StopMode geweckt, bzw bei StanBy Reset, also 
EXTI17 weglassen oder nit

Viel Spass, ich hoffe ich habe nix vergessen ansonsten fragen !

Gruss und moin.

Autor: latif ho (latif_h)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
dankeee   Jean

Autor: latif h. (latif_h96)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
ok

Autor: latif ho (latif_h)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
ein frage RTC lost ein secunde interrupt( Alarm pro secunde) an welche 
pin kann ich die secunde interrupt haben ist RTC mit ein bistimte pin 
verbunden oder kann mann die belibig mit ein pin verbinden
von datasheet weis ich die ist mit TAMPER-RTC/ ALARM/SECOND OUT verbuden

Autor: latif ho (latif_h)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
eigentlich weis ich nicht die vorgangsweise

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net