3227|2

1524

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【AT-START-F403A测评】+RTC测试验证 [复制链接]

  本帖最后由 jinglixixi 于 2020-9-29 19:46 编辑

原打算先为开发板配置一个显示屏,有了显示窗口就便于信息输出了,无奈耗了几天的时间也没使OLED屏显示半点痕迹,先在例程的功能模块上练练手了。

RTC是大多数ARM产品都配置的功能,自然AT32F403AF也不例外,没有OLED屏做支撑,也就只能依赖串口通信了,无奈呀,无奈!

由于开发板自身就可以虚拟出串口,也就省去了外挂USB转TTL串口模块的麻烦,当然这个虚拟出的串口占用的编号比较大,只能将其强行改的小一些,否则串口调试工具可不答应。

将程序编译下载后,其运行效果如图1所示。

图1 运行效果

 

天啊,这哥们儿还停留在2018年呐!

老哥醒醒吧,光阴荏苒,现在已经是2020年了。

唤醒老哥的办法只有一个,那就是修改初始时间设置。

打开时间设置函数才发现事情有点怪,什么情况?

你亲自看下面这个函数吧!

uint8_t RTC_Set(uint16_t syear, uint8_t smon, uint8_t sday, uint8_t hour, uint8_t min, uint8_t sec)
{
         uint32_t t;
         uint32_t 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+=(uint8_t)mon_table[t]*86400;
                   if(Is_Leap_Year(syear)&&t==1)seccount+=86400;           
         }
         seccount+=(uint8_t)(sday-1)*86400;
         seccount+=(uint8_t)hour*3600;
         seccount+=(uint8_t)min*60;
         seccount+=sec;
         /* Enable PWR and BKP clock */
         RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_PWR | RCC_APB1PERIPH_BKP, ENABLE);
         /* Enable write access to Backup domain */
         PWR_BackupAccessCtrl(ENABLE);
         /* Set the RTC counter value */
         RTC_SetCounter(seccount);
         /* Wait until last write operation on RTC registers has finished */
         RTC_WaitForLastTask();
         return 0;     
}

看出来没有,我们通常使用的RTC函数是从相应的寄存器中读取时间值和日期值。

这哥们儿竟然需要统一折算到秒,莫非它就是一个大号的秒信号计数器呀!

设置时间时折算到秒来更新计时值,读取时再按进制变换成年月日、分时秒。

难怪在程序的数组中存放了这些清规戒律呐!

const uint8_t table_week[12]={0,3,3,6,1,4,6,2,5,0,3,5};

const uint8_t mon_table[12]={31,28,31,30,31,30,31,31,30,31,30,31};

原来是怕老哥出轨呀!

 

通过分析RTC初始化函数RTC_Init(),才发现初始时间的设置函数被藏在这里,其内容是RTC_Set(2018, 8, 8, 8, 8, 0);。

别客气,按电脑的系统将它摆平了!

修改后经程序的程序编译下载,其步调终于是跟上队了,其时间效果如图2所示。

嗯,表现还不赖!

哎,就怪我的表现不好,没有及时为你配上一个颜值高的小脸蛋!算哥欠你的。

图2 更新RTC计时

最新回复

如果安装上电池,就不会执行RTC_Set(2018, 8, 8, 8, 8, 0);。函数了     详情 回复 发表于 2021-2-21 17:02
点赞(1) 关注(1)
 
 

回复
举报

1万

帖子

203

TA的资源

管理员

沙发
 

雅特力AT-START-F403A测评汇总
https://bbs.eeworld.com.cn/thread-1143018-1-1.html

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复

267

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

如果安装上电池,就不会执行RTC_Set(2018, 8, 8, 8, 8, 0);。函数了

个人签名

gitee/casy

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表