Hi
I'm using STM32RTC lib to get time, but when the board reset time reset too, I know I should work with RTC backup register, but how on Arduino IDE?
STM32F1xx RTC Time Reset
Re: STM32F1xx RTC Time Reset
Have you changed clock source to external ??
Code: Select all
setClockSource(STM32RTC::LSE_CLOCK)
Re: STM32F1xx RTC Time Reset
when I change clock source, the program stop after change.GonzoG wrote: Wed Nov 25, 2020 1:01 pm Have you changed clock source to external ??Code: Select all
setClockSource(STM32RTC::LSE_CLOCK)
Code: Select all
/*
SimpleRTC
This sketch shows how to configure the RTC and to display
the date and time periodically
Creation 12 Dec 2017
by Wi6Labs
Modified 03 Jul 2020
by Frederic Pillon for STMicroelectronics
This example code is in the public domain.
https://github.com/stm32duino/STM32RTC
*/
#include <STM32RTC.h>
/* Get the rtc object */
STM32RTC& rtc = STM32RTC::getInstance();
/* Change these values to set the current initial time */
const byte seconds = 20;
const byte minutes = 14;
const byte hours = 19;
/* Change these values to set the current initial date */
/* Monday 15th June 2015 */
const byte weekDay = 1;
const byte day = 15;
const byte month = 6;
const byte year = 15;
void setup()
{
Serial.begin(9600);
delay(1000);
// Select RTC clock source: LSI_CLOCK, LSE_CLOCK or HSE_CLOCK.
// By default the LSI is selected as source.
Serial.print("RTC Test");
rtc.setClockSource(STM32RTC::LSE_CLOCK);
Serial.print("Clcok Set");
rtc.begin(); // initialize RTC 24H format
// Set the time
rtc.setHours(hours);
rtc.setMinutes(minutes);
rtc.setSeconds(seconds);
// Set the date
rtc.setWeekDay(weekDay);
rtc.setDay(day);
rtc.setMonth(month);
rtc.setYear(year);
// you can use also
//rtc.setTime(hours, minutes, seconds);
//rtc.setDate(weekDay, day, month, year);
}
void loop()
{
// Print date...
Serial.printf("%02d/%02d/%02d ", rtc.getDay(), rtc.getMonth(), rtc.getYear());
// ...and time
Serial.printf("%02d:%02d:%02d.%03d\n", rtc.getHours(), rtc.getMinutes(), rtc.getSeconds(), rtc.getSubSeconds());
delay(1000);
}
not more
Re: STM32F1xx RTC Time Reset
Which board you used ? Is there an LSE ?
Re: STM32F1xx RTC Time Reset
I'm using STM32F103C8T6 with my own designed PCB, using 8MHz for main core and 32.768Khz for RTC and 3v 2032 battery.
Yes LSE is enabled, I attached the code above.
Re: STM32F1xx RTC Time Reset
This part resets your time with every boot.saeed144 wrote: Wed Nov 25, 2020 3:49 pm
when I change clock source, the program stop after change.Code: Select all
void setup(){ ... // Set the time rtc.setHours(hours); rtc.setMinutes(minutes); rtc.setSeconds(seconds); ... }
You need to add a condition:
Code: Select all
if (!rtc.isTimeSet()) {
// Set the time
rtc.setHours(hours);
rtc.setMinutes(minutes);
rtc.setSeconds(seconds);
}
Then there might be something wrong with your board design or variant setup.
It works without any problems with F103 blue pill.