打印

如何改写RTC计数器?

[复制链接]
2185|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ritamm66|  楼主 | 2009-7-17 11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32 如何在程序运行中改写RTC计数器修改时间?

我用例程的Time_Adjust函数写入会在RTC_WaitForLastTask判断里跳不出来。 
沙发
zhaoyu2005| | 2009-7-17 11:28 | 只看该作者

看看时钟是不正是正常

如果时钟不正常的话,好像就跳不出来了

使用特权

评论回复
板凳
ritamm66|  楼主 | 2009-7-17 12:12 | 只看该作者

用RTC第一次初始化才行

看到有人说在进行第二次开机(非初始化模式)也要rPWR_CR |= __BIT(8),也就是需要使能写入。
也加了PWR_BackupAccessCmd(ENABLE);也不行。

使用特权

评论回复
地板
zhaoyu2005| | 2009-7-22 09:41 | 只看该作者

我也遇到了,第一次初始化正常

第二次开机就出问题,按香主的意思是:尽量不复位计数器,按一个固定的年月日时分秒计算出当前的时间

使用特权

评论回复
5
香水城| | 2009-7-22 11:04 | 只看该作者

看看手册,这个问题很好解决

请看手册中的这个说明:RTC_WaitForLastTask()函数是在写RTC寄存器之前调用的,写RTC寄存器之后不必调用。更重要的是,再重新上电之后,操作RTC寄存器之前,需要调用一次RTC_WaitForSynchro()函数。

把你的程序修改一下试试。



请看我在另一个帖子中的说明:请香主和大侠看下RTC的问题(用官方库)

使用特权

评论回复
6
zhaoyu2005| | 2009-7-22 14:36 | 只看该作者

请楼主注意下,两个函数

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
  PWR_BackupAccessCmd(ENABLE);

使用特权

评论回复
7
chineser| | 2009-7-22 15:59 | 只看该作者

解决方法

http://www.stmsky.com/bbs/viewthread.php?tid=1643&extra=page%3D1

使用特权

评论回复
8
zhaoyu2005| | 2009-7-22 16:55 | 只看该作者

咋没早些时间看到呢

费了好大劲儿解决了才看到这个

使用特权

评论回复
9
香水城| | 2009-7-22 17:11 | 只看该作者

后备区域的供电和使能是每次上电之后必做的事情

怎么会忘呢?难道第一次做了,断电以后就忘了?

使用特权

评论回复
10
twuking| | 2009-7-23 19:02 | 只看该作者

我的改写RTC计数器的过程,可参考

void BSP_Time_Adjust(u32 ctime)
{
  PWR_BackupAccessCmd(ENABLE);     // enable access backup register
  RTC_WaitForLastTask();      // Wait until last write operation on RTC registers has finished 
  RTC_SetCounter(ctime);    // Change the current time  
  RTC_WaitForLastTask();      // Wait until last write operation on RTC registers has finished
  PWR_BackupAccessCmd(DISABLE);
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

53

帖子

0

粉丝