OpenEdv-开源电子网

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

rtc的一段程序 不太懂啊

[复制链接]

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
发表于 2013-9-17 20:22:52 | 显示全部楼层 |阅读模式
void calendar_alarm_init(_alarm_obj *alarmx) 
{  
  u32 curtime=0;
u32 temptime=0;
u32 destime=0XFFFFFFFF;//目标闹铃时间(s)设定到最大                                    为什么 设置最大啊
  if(alarmx->weekmask)//必须要有闹钟存在,周日到周六任意一天                      
{       
curtime=RTC->CNTH;//得到计数器中的值(秒钟数)                        
curtime<<=16;                                                               
curtime+=RTC->CNTL;   
//取一个与当前时间最接近的值作为闹钟寄存器的内容
temptime=curtime/86400; //得到当前运行天数(此处没有用到天数,仅作说明用)
temptime=temptime*86400;
  temptime+=(u32)alarmx->hour*3600+(u32)alarmx->min*60;//得到秒钟数
  if(temptime<=curtime)temptime+=86400;//执行时间已过,推迟到明天
  destime=temptime;//更改闹钟寄存器
  }
RCC->APB1ENR|=1<<28;//使能电源时钟
    RCC->APB1ENR|=1<<27;//使能备份时钟
PWR->CR|=1<<8;    //取消备份区写保护
//上面三步是必须的!
RTC->CRL|=1<<4;   //允许配置 
RTC->ALRL=destime&0xffff;      什么意思
RTC->ALRH=destime>>16;      不懂
RTC->CRL&=~(1<<4);//配置更新
while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成  
}
这 程序什么套路
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2013-9-17 20:26:40 | 显示全部楼层
RTC->CRH|=0X02;  
 RTC->ALRH=0;  
  RTC->ALRL=5;
void RTC_IRQHandler(void)
{           
 if(RTC->CRL&0X0001)
 {
  RTC_Get();//更新时间 
  
 }
 if(RTC->CRL&0X0002)
 { LED1=0;
  RTC->CRL&=~(0X0002);
  
 }             
    RTC->CRL&=0X0FFA;         //清除溢出,秒钟中断标志
 while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成                   
}

这样写行么? 中断线需要设置么
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-17 21:08:19 | 显示全部楼层
回复【2楼】盒子:
---------------------------------
自己测试,实验。让实际 结果告诉你行不行。

回复【楼主位】盒子:
---------------------------------
本函数相当于以下问题的解决办法:
假设你有多个闹钟,在一个闹钟闹铃后,如何将下一个闹钟加载到闹钟寄存器里面?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2013-9-18 08:35:45 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
谢谢原子哥,早上突然明白了,一调好使了定了一个10S闹钟点亮小灯的,感觉当时问的问题好白痴啊,就把三步必须的写上,再写入一个合法的时间就可以了,智商着啊,我这智商感觉快要告别STM32了,麻烦您了原子哥,您真有耐心啊
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-13 02:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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