发 帖  
原厂入驻New
[问答] 开发板库函数版本,RTC程序中的问题如何解决
62 RTC
分享
u8 RTC_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->CNTL=seccount&0xffff;
//RTC->CNTH=seccount>>16;
//RTC->CRL&=~(1<<4);//配置更新
//while(!(RTC->CRL&(1<<5)));//等待RTC寄存器操作完成
/* Enable PWR and BKP clocks */
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能PWR和BKP外设时钟     
/* Allow access to BKP Domain */
     PWR_BackupAccessCmd(ENABLE); //使能RTC和后备寄存器访问
  //  RTC_EnterConfigMode();//进入配置模式

/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成
/* Change the current time */
RTC_SetCounter(seccount); //设置RTC计数器的值
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask(); //等待最近一次对RTC寄存器的写操作完成   
// RTC_ExitConfigMode();//退出配置模式
return 0;     
}
需要添加红色这几句才能修改时间。(红色代码对应原来的绿色代码)
但是,现在有一个小疑问:
为什么不需要置位CNF配置标志就能进入配置模式(l蓝色代码)。
请教大家了~~刚开始学STM32
0
2020-5-27 04:35:04   评论 分享淘帖 邀请回答
4个回答
2020-5-27 07:24:18 评论

举报

因为有红色部分代码的存在.
2020-5-27 07:44:05 评论

举报

嗯~谢谢原子,后来仔细查了一下解决了,麻烦你
2020-5-27 07:58:18 评论

举报

void RTC_SetCounter(uint32_t CounterValue)

  RTC_EnterConfigMode();
  /* Set RTC COUNTER MSB word */
  RTC->CNTH = CounterValue >> 16;
  /* Set RTC COUNTER LSB word */
  RTC->CNTL = (CounterValue & RTC_LSB_MASK);
  RTC_ExitConfigMode();
}
2020-5-27 08:08:07 评论

举报

只有小组成员才能发言,加入小组>>

68个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

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