OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7726|回复: 4

关于RTC闹钟中断和秒中断设置问题

[复制链接]

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-11-9
在线时间
0 小时
发表于 2014-5-28 16:40:43 | 显示全部楼层 |阅读模式
5金钱
想问问有没有大侠做过低功耗,我要用RTC秒中断做个万年历,并且秒中断要当做一个一秒的定时器,现在做完以后,想利用RTC闹钟中断做STOP模式低功耗处理,本来设想是这样的:秒中断一秒一次,在秒中断中断处理函数最后如果没有事可做,就进入STOP模式睡觉,并且设一个500ms的RTC闹钟中断,500ms可以省电,500msRTC闹钟唤醒单片机,一秒钟剩下时间运行程序,当秒中断再次来临时,进入中断处理函数,中断处理函数最后没事可做,再进入STOP睡觉。不曾想中间出现的分频因数,设成32767,每秒中断没问题,但是没办法设500msRTC闹钟了,如果设成16384,500msRTC闹钟可以搞定,但是500ms进入一次RTC全局中断,这样设想也没办法完成,有没有人遇到这样的问题,原子哥能不能帮忙解决下,谢谢了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-28 23:30:20 | 显示全部楼层
你就直接设置RTC500ms中断一次就是了.
然后每中断2次,算1秒钟
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-11-9
在线时间
0 小时
 楼主| 发表于 2014-5-29 11:41:41 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
恩恩 原子哥 我也准备这样做  发现一个问题  你帮我看看 我想的对不对 : 我直接设置RTC500ms中断一次,那么在第一个“500ms全局中断”中断处理函数最后让他进入STOP模式,并且设一个“500msRTC闹钟”,之后第二个“500ms全局中断”是没办法响应的,因为这时单片机在睡觉(第一个“500ms全局中断”中断处理需要一些时间,比如10ms,在加上500ms,也就是说单片机在510ms才会醒,可是在500ms的时候有第二个“500ms全局中断”就应该发生了)。在510毫秒单片机醒了,剩下的490ms跑程序,等到1000ms(1s),第三个“500ms全局中断”开始响应,第三个“500ms全局中断”中断处理函数最后让他进入STOP模式,然后循环,让单片机在没有任务的时候,1s中500ms睡觉,500ms工作,实现低功耗,不知道我这样理解对不对?
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-11-9
在线时间
0 小时
 楼主| 发表于 2014-5-29 12:35:38 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
还有一个问题 如果要是STOP模式睡觉了 唤醒后需要恢复外部时钟 
        RCC->CR|=0x00010000;  //外部高速时钟使能HSEON
while(!(RCC->CR>>17));//等待外部时钟就绪
RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
PLL-=2;//抵消2个单位
RCC->CFGR|=9<<18;   //设置PLL值 2~16
RCC->CFGR|=1<<16;   //PLLSRC ON 
FLASH->ACR|=0x32;   //FLASH 2个延时周期

RCC->CR|=0x01000000;  //PLLON
while(!(RCC->CR>>25));//等待PLL锁定
RCC->CFGR|=0x00000002;//PLL作为系统时钟  
while(temp!=0x02)     //等待PLL作为系统时钟设置成功
{   
temp=RCC->CFGR>>2;
temp&=0x03;
        }

 这个代码能不能放在中断里恢复时钟用呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-29 23:00:59 | 显示全部楼层
回复【4楼】necrocn:
---------------------------------
应该可以,这个你试试吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-7 18:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表