回复【7楼】 hack906447 :
---------------------------------
还是要多自己动脑.
我们卖开发板,但不负责帮客户写代码,如果有这个想法,那就不要买了.
技术支持不是帮你写代码,而是告诉你方法.指点你方向.
所谓师傅引入门,修行靠个人,我不指望我们所有客户都能学的很好,只要真心想学的人能学好就够了.
你这个RTC问题,要是会找资料的,早就做出来了.
很久前就有一个帖子:http://www.openedv.com/posts/list/28550.htm
里面就有RTC周期唤醒的,其实就是闹钟.
函数如下:
[mw_shl_code=c,true]//初始化闹钟
//以1970年1月1日为基准
//1970~2099年为合法年份
//syear,smon,sday,hour,min,sec:闹钟的年月日时分秒
//返回值:0,成功;其他:错误代码.
u8 ALARM_Set(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8 sec)
{
u16 t;
u32 seccount=0;
if(syear<1970||syear>2099)return 1;
for(t=1970;t<syear;t++) //把所有年份的秒钟相加
{
if(Is_Leap_Year(t))seccount+=31622400;//闰年的秒钟数
else seccount+=31536000; //平年的秒钟数
}
smon-=1;
for(t=0;t<smon;t++) //把前面月份的秒钟数相加
{
seccount+=(u32)mon_table[t]*86400;//月份秒钟数相加
if(Is_Leap_Year(syear)&&t==1)seccount+=86400;//闰年2月份增加一天的秒钟数
}
seccount+=(u32)(sday-1)*86400;//把前面日期的秒钟数相加
seccount+=(u32)hour*3600;//小时秒钟数
seccount+=(u32)min*60; //分钟秒钟数
seccount+=sec;//最后的秒钟加上去
//设置时钟
RCC->APB1ENR|=1<<28;//使能电源时钟
RCC->APB1ENR|=1<<27;//使能备份时钟
PWR->CR|=1<<8; //取消备份区写保护
//上面三步是必须的!
RTC->CRL|=1<<4; //允许配置
RTC->ALRL=seccount&0xffff;
RTC->ALRH=seccount>>16;
RTC->CRL&=~(1<<4);//配置更新
while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
return 0;
}[/mw_shl_code]
我看你两天前就找到这个帖子了,不知道为什么你还是搞不出来.
所以,多动手,多思考吧.
|