你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 9021|回复: 4

请大家帮忙看看,怎么STM8L151的RTC AWU只能实现第一次正常中断,以后唤醒时间都不对了?

[复制链接]

3

主题

241

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-10-31
发表于 2013-6-14 17:40:34 | 显示全部楼层 |阅读模式
 
                                                
程序如下,怎么STM8L151的RTC AWU只能实现第一次正常?以后的中断定时时间就不对了、很短、用示波器才能看到、好像定时计数器WUT不能自动重装似的。
                        请高手指导!
                        void RTC_AWU()
                        {
                          CLK_PCKENR2 |= 0x04;                //外设RTC时钟允许,Frtc = Flsi/8 = 38K/8
                          CLK_CRTCR = 0x04;                   //CLK_CRTCR[7:5]=000B 则RTC clock source/1
                                                                         //CLK_CRTCR[4;1]=0010B 则选择LSI
                          while( (CLK_CRTCR&0x01) == 0x1 );   //CLK_CRTCR[0]=1为忙
                          
                          //RTC解锁,必须先写0xCA后写0x53
                          RTC_WPR = 0xCA;
                          RTC_WPR = 0x53;
                          
                          RTC_CR2_WUTE = 0;                   //必须先清专用定时器唤醒允许位,再操作RTC其它寄存器
                          
                          RTC_CR1 = 0x00;                     //wakeup时钟选择,RTC_CR1[2:0]=000B则选择 RTCCLK/16
                          
                          while( RTC_ISR1_WUTWF == 0 );       //等待wakeup时钟允许,即:WUTWF=1为允许
                          
                          //写定时计数器的值(下向计数的)   
                          // Wakeup周期 = 1/(Frtc/8/16)*(WUT[15:0]+1)
                          //            = 1/(38K/8/16)*(10000+1)
                          //            = 3.368ms*10001 =
                          RTC_WUTRH = 10000/256;
                          RTC_WUTRL = 10000%256;              
                          
                          RTC_CR2_WUTIE = 1;
                          RTC_CR2_WUTE = 1; 
                          asm("RIM");
                        }
                        
                        //********************************************************************************
                        //RTC AWU中断
                        #pragma vector=0X06 
                        __interrupt void RTC_AWU_vector() 
                        { 
                        
                           RTC_ISR2_WUTF = 0;                  //清RTC AWU中断标志
                             
                           LED_out = !PD_IDR_IDR2;   
                        }
            
             
             
            
            
            
            收藏0顶、支持0             

            
回复

使用道具 举报

24

主题

591

回帖

0

蝴蝶豆

中级会员

最后登录
2020-12-2
发表于 2013-6-14 22:12:35 | 显示全部楼层

RE:请大家帮忙看看,怎么STM8L151的RTC AWU只能实现第一次正常中断,以后唤醒时间都不对了?

有没有其它高级的中断源啊?
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2013-6-15 09:24:20 | 显示全部楼层

RE:请大家帮忙看看,怎么STM8L151的RTC AWU只能实现第一次正常中断,以后唤醒时间都不对了?

RTC闹钟中断,每次都要重新设置下一次中断的时间。
回复 支持 反对

使用道具 举报

3

主题

241

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-10-31
 楼主| 发表于 2013-6-16 19:41:16 | 显示全部楼层

回复:请大家帮忙看看,怎么STM8L151的RTC AWU只能实现第一次正常中断,以后唤醒时间都不对了?

回复第 2 楼 于2013-06-14 22:12:35发表:
有没有其它高级的中断源啊?
没其它中断源,只有这个。
还有STM8L运行的功耗比手册说的要大得多。
 
回复 支持 反对

使用道具 举报

3

主题

241

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-10-31
 楼主| 发表于 2013-6-16 19:42:55 | 显示全部楼层

回复:请大家帮忙看看,怎么STM8L151的RTC AWU只能实现第一次正常中断,以后唤醒时间都不对了?

回复第 3 楼 于2013-06-15 09:24:20发表:
RTC闹钟中断,每次都要重新设置下一次中断的时间。
试过了,重装计数时间也不行,手册上说能自动重装计数器的。
 
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版