为什么要频繁地写RTC呢?
首先,请看另一个帖子的讨论:
STM32F103的RTC有些鸡肋了根据这个帖子中讨论的方法,你只需要把RTC的计数设置为秒计数,把计数器为全0的值定义为某个特定的日期和时间。这样设置之后,只要RTC的电池不掉电,不必再重复地设置RTC的工作状态,每次只需读出RTC计数器的数值,稍加计算即可得到真实的日期和时间。
例如:假定计数器为全0为2008年1月1日0时0分0秒。
1)如果计数器的读数为0x00001000,则它对应的时间为2008年1月1日 1:08:16,因为 1:08:16相对0:00:00间隔4096(0x1000)秒。
2) 如果计数器的读数为0x00123456,即与2008年1月1日0:00:00间隔1193046秒,计算如下:
每小时3600秒,每天86400秒
1193046 / 86400=13 对应2008年1月14日
1193046 % 86400 = 69846
69846 / 3600 = 19 对应19时
69846 % 3600 = 1446
1446 / 60 = 24 对应24分
1446 % 60 = 6 对应6秒
因此,计数器的读数为0x00123456对应2008年1月14日19:24:06。
根据这个说明,程序应该不难写吧!
如果要求更精确的计时,可以把计数器设置为1/10秒计数等,计算原理照旧。