OpenEdv-开源电子网

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

stm32 rtc 实时时钟 按键设置

[复制链接]

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-4-10
在线时间
0 小时
发表于 2014-5-13 21:51:05 | 显示全部楼层 |阅读模式
5金钱
我用的是迷你版的例程  希望增加一个功能 就是比如 按key0 分钟的数值加一  按key1 时钟数值加一   就是用按键设置时钟的数值   
我在主函数里面加了如下几句话  但是没用反应   不知道为什么。
[mw_shl_code=c,true] /* m=KEY_Scan(); if(m) { switch(m) { case 1: // key 0 timer.hour=timer.hour+1; break; case 2: // key 1 timer.min=timer.min+1; break; } }else delay_ms(10);*/[/mw_shl_code]
希望有大神指导改如何修改

最佳答案

查看完整内容[请看2#楼]

回复【9楼】GodJudge: --------------------------------- 你获取时间后,对获取的时间进行计算然后在赋值                         key =KEY_Scan(0); if(key) { RTC_Get(); calendarmin = calendar.min+key; // RTC_Set(calendar.w_year, calendar.w_mon ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-11-21
在线时间
0 小时
发表于 2014-5-13 21:51:06 | 显示全部楼层
回复【9楼】GodJudge:
---------------------------------
你获取时间后,对获取的时间进行计算然后在赋值
                        key =KEY_Scan(0);
if(key)
{
RTC_Get();
calendarmin = calendar.min+key; //
RTC_Set(calendar.w_year, calendar.w_month, calendar.w_date, calendar.hour, calendarmin, calendar.sec);//改完相应的值,再赋值
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-13 23:14:26 | 显示全部楼层
你要修改时钟才行.
调用RTC_Set函数.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

11

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2014-5-7
在线时间
5 小时
发表于 2014-5-14 11:13:43 | 显示全部楼层
RTC时钟怎么做的啊
回复

使用道具 举报

11

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2014-5-7
在线时间
5 小时
发表于 2014-5-14 11:15:10 | 显示全部楼层
求指导RTC时钟的中断配置和中断向量问题。是真心搞不懂了
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-4-10
在线时间
0 小时
 楼主| 发表于 2014-5-14 12:07:33 | 显示全部楼层
回复【4楼】认真就输了:
---------------------------------
我是初学者   大神是一楼
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-4-10
在线时间
0 小时
 楼主| 发表于 2014-5-14 12:08:03 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
就是说要修改RTC_Set函数  怎么修改呢
回复

使用道具 举报

8

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-11-21
在线时间
0 小时
发表于 2014-5-14 14:34:33 | 显示全部楼层
回复【6楼】GodJudge:
---------------------------------
就是把你改完后的值赋给RTC()函数中的形参
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-4-10
在线时间
0 小时
 楼主| 发表于 2014-5-14 16:04:34 | 显示全部楼层
回复【7楼】苦竹2009:
---------------------------------
我去试试
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-4-10
在线时间
0 小时
 楼主| 发表于 2014-5-15 14:20:43 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥 虽然你很辛苦  还是要麻烦你了   
我程序修改过了 现在出现这个问题  按键长按后 要改变的那个位有反应  但不正确  就是说 比如现在15:17:03  我想min+1    按相应按键后  变成  15:1:03  放手后又恢复原样  我不知道改怎么修改  
m=KEY_Scan();
       if(m)
{
 switch(m)
 {
    case 0:
break;

 case 1:               // key 0  min+1
    RTC_Get();
 timecount=RTC->CNTH+60;
 timer.min=(temp%3600)/60+1;
            break;

            case 2:             // key 1   hour+1
RTC_Get();

             timecount=RTC->CNTH+3600;
timer.hour=temp/3600+1;
  
            break;


}
}else delay_ms(10);


这是我添加的程序  在主程序中  用的例程是mini板的实时RTC时钟
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-4-10
在线时间
0 小时
 楼主| 发表于 2014-5-15 15:15:28 | 显示全部楼层
回复【10楼】苦竹2009:
---------------------------------
key的返回值不是0 1 2 么  怎么可以直接加上去  
然后我需要的是在程序中加一句rtc_set么
回复

使用道具 举报

8

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-11-21
在线时间
0 小时
发表于 2014-5-15 15:19:12 | 显示全部楼层
回复【11楼】GodJudge:
---------------------------------
key 设置的返回值1,2,3,加上去简单点,刚改的。
是的,如果改动其他变量也一样。
回复

使用道具 举报

4

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2014-4-10
在线时间
0 小时
 楼主| 发表于 2014-5-15 15:31:44 | 显示全部楼层
回复【12楼】苦竹2009:
---------------------------------
调出来后再回头看程序 刚才一些疑问豁然开朗  谢谢了
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2021-8-24
在线时间
11 小时
发表于 2021-9-29 11:38:48 | 显示全部楼层
正点原子 发表于 2014-5-13 23:14
你要修改时钟才行.
调用RTC_Set函数.

想要修改,rtc时钟控制LED时分秒各闪动一次,应该怎么做啊。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2021-8-24
在线时间
11 小时
发表于 2021-9-29 11:40:46 | 显示全部楼层
GodJudge 发表于 2014-5-15 14:20
回复【2楼】正点原子:
---------------------------------
原子哥 虽然你很辛苦  还是要麻 ...

我的循环里面为什么只能循环两次啊!然后需要系统复位一下才可以继续显示时间,求大佬解

while(1)
        {                                                                                           


                  if (WK_UP==1)
                        {
                                if (k<4)
                                {
                                        k++;
                switch (k)
                                {
       
                        case 0:  
                               if (KEY1==0)
                                                {
                                                         delay_ms(10);
                                 RTC_Get();
                                 calendarsec =calendar.sec+1/4;                 
                                 RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendarsec);
                                                       
                                                }break;
                                                if (KEY0==0)
                                                        {
                                                                delay_ms(10);
                                 RTC_Get();
                                 calendarsec =calendar.sec-1/4;                 
                                 RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendarsec);
                                                               
                                                        }
                        case 1:if(KEY1==0)
                                        {
                                                delay_ms(10);
                                                RTC_Get();
                                                calendarmin =calendar.min+1;                         
                                                RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendarmin,calendar.sec);
                                               
                                        }
                                        if (KEY0==0)
                                        {
                                                delay_ms(10);
                                                RTC_Get();
                                                calendarmin =calendar.min-1;                         
                                                RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendarmin,calendar.sec);
                                               
                                        }
                        case 2:if(KEY1==1)
                                        {
                                                        delay_ms(10);
                                                        RTC_Get();
                                                        calendarhour =calendar.hour+1;                 
                                                        RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date,calendarhour,calendar.min,calendar.sec);
                                               
                                        }
                                        if (KEY0==1)
                                         {
                                                 delay_ms(10);
                                                        RTC_Get();
                                                        calendarhour =calendar.hour-1;                 
                                                        RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date,calendarhour,calendar.min,calendar.sec);
                                                 
                                         }
                        case 3 :break;
                                 }
                         }
                        }
                       
                       
惑。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-1 22:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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