OpenEdv-开源电子网

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

奇案之RTC的Auto_Time_Set (二)

[复制链接]

62

主题

275

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1155
金钱
1155
注册时间
2012-3-4
在线时间
80 小时
发表于 2012-7-14 17:05:15 | 显示全部楼层 |阅读模式
根本就没看到这个函数,不注释无法编译,我注释之,编译 完成,求解释

上面几行有个手册上写的应该是RLE振荡器,第八位1<<8,不知道是怎么第一次配置的,是不是不需要配置没有验证正确性呢?疑问
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

62

主题

275

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1155
金钱
1155
注册时间
2012-3-4
在线时间
80 小时
 楼主| 发表于 2012-7-14 17:09:36 | 显示全部楼层
回复 支持 反对

使用道具 举报

62

主题

275

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1155
金钱
1155
注册时间
2012-3-4
在线时间
80 小时
 楼主| 发表于 2012-7-14 17:15:49 | 显示全部楼层
 //实时时钟配置
//初始化RTC时钟,同时检测时钟是否工作正常
//BKP->DR1用于保存是否第一次配置的设置
//返回0:正常
//其他:错误代码
u8 RTC_Init(void)
{
//检查是不是第一次配置时钟
u8 temp=0;
if(BKP->DR1!=0X5050)//第一次配置
{  
   RCC->APB1ENR|=1<<28;     //使能电源时钟     
RCC->APB1ENR|=1<<27;     //使能备份时钟     
PWR->CR|=1<<8;           //取消备份区写保护
RCC->BDCR|=1<<16;        //备份区域软复位    
RCC->BDCR&=~(1<<16);     //备份区域软复位结束     
    RCC->BDCR|=1<<0;         //开启外部低速振荡器 
    while((!(RCC->BDCR&0X02))&&temp<250)//等待外部时钟就绪  
{
temp++;
delay_ms(10);
};
if(temp>=250)return 1;//初始化时钟失败,晶振有问题     

RCC->BDCR|=1<<8; //LSI作为RTC时钟    9:8 】 01应该是LSE  
RCC->BDCR|=1<<15;//RTC时钟使能   
   while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成  
     while(!(RTC->CRL&(1<<3)));//等待RTC寄存器同步  
     RTC->CRH|=0X01;     //允许秒中断
     while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成  
RTC->CRL|=1<<4;              //允许配置    
RTC->RLH=0X0000;
RTC->RLL=32767;             //时钟周期设置(有待观察,看是否跑慢了?)理论值:32767  
Auto_Time_Set(); //没有这个函数啊,注释掉才行,求解释
//RTC_Set(2009,12,2,10,0,55);  //设置时间   
RTC->CRL&=~(1<<4);           //配置更新
while(!(RTC->CRL&(1<<5)));   //等待RTC寄存器操作完成     
BKP->DR1=0X5050;
//BKP_Write(1,0X5050);;//在寄存器1标记已经开启了 
//printf("FIRST TIME\n");
}else//系统继续计时
{
     while(!(RTC->CRL&(1<<3)));//等待RTC寄存器同步  
     RTC->CRH|=0X01;     //允许秒中断
     while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
//printf("OK\n");
}        
MY_NVIC_Init(0,0,RTC_IRQChannel,2);//RTC,G2,P2,S2.优先级最低     
RTC_Get();//更新时间 
return 0; //ok
}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-7-14 22:01:23 | 显示全部楼层
第一个,注释有误.
第二个,void Auto_Time_Set(void)函数在ALIENTEK MINISTM32 实验11 RTC实时时钟实验,rtc.c的第249行.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
发表于 2012-7-15 15:39:50 | 显示全部楼层
Auto_Time_Set(); //没有这个函数啊,注释掉才行,求解释

这个自己写个嘛,那个是用来设置时钟的。原子的这个代码是直接写上去的,没用人机介面,自己可以搞一个。直接写上去的要对表,然后看到差不多了丢板子。
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
发表于 2012-7-15 15:41:28 | 显示全部楼层
PS:原子的书第一版很多BUG,最好看电子板的。
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-7-15 19:10:07 | 显示全部楼层
不是吧?第二版改了不少了哦.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

62

主题

275

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1155
金钱
1155
注册时间
2012-3-4
在线时间
80 小时
 楼主| 发表于 2012-7-16 00:29:58 | 显示全部楼层
注释错误?红色的注释错误还是蓝色的呢?



回复 支持 反对

使用道具 举报

62

主题

275

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1155
金钱
1155
注册时间
2012-3-4
在线时间
80 小时
 楼主| 发表于 2012-7-16 00:30:32 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
注释错误?红色的注释错误还是蓝色的呢?
回复 支持 反对

使用道具 举报

62

主题

275

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1155
金钱
1155
注册时间
2012-3-4
在线时间
80 小时
 楼主| 发表于 2012-7-16 00:37:29 | 显示全部楼层
回复【9楼】l1234564555:
---------------------------------
找到了,先自己看还是最好
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-22 12:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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