OpenEdv-开源电子网

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

请问怎么用按键修改RTC的显示,谁有做过,能说说吗?

[复制链接]

126

主题

820

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1683
金钱
1683
注册时间
2012-10-28
在线时间
62 小时
发表于 2013-4-24 08:45:30 | 显示全部楼层 |阅读模式
多谢了,现在准备用中断试下,头大了。
坚持学习!就能成功!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

头像被屏蔽

88

主题

231

帖子

2

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-11
在线时间
40 小时
发表于 2013-4-24 09:08:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

头像被屏蔽

88

主题

231

帖子

2

精华

高级会员

Rank: 4

积分
844
金钱
844
注册时间
2013-4-11
在线时间
40 小时
发表于 2013-4-24 09:10:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2013-4-24 09:20:54 | 显示全部楼层
楼主江西哪的,我们是老乡
1-1
回复 支持 反对

使用道具 举报

126

主题

820

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1683
金钱
1683
注册时间
2012-10-28
在线时间
62 小时
 楼主| 发表于 2013-4-24 15:44:31 | 显示全部楼层

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h" 
#include "usmart.h" 
#include "rtc.h"
//ALIENTEK桵耦STM32羲楷啣妗桄15
//RTC妗奀奀笘妗桄 
//撮扲盓厥ㄩwww.openedv.com
//嫘笣庈陎秫萇赽褪撮衄癹鼠侗 
//extern RTC_Set(syear,smon,sday,hour,min,sec);
 int main(void)
 { 
  u8 t=0; 
 u8 Ptimes=0;
 delay_init();       //晊奀滲杅場宎趙  
 NVIC_Configuration();   //扢离NVIC笢剿煦郪2:2弇?梩蚥珂撰ㄛ2弇砒茼蚥珂撰
 uart_init(9600);   //揹諳場宎趙峈9600
  LED_Init();        //LED傷諳場宎趙
 LCD_Init();
        KEY_Init();     
 usmart_dev.init(SystemCoreClock/1000000); //場宎趙USMART 
  OINT_COLOR=RED;//扢离趼极峈綻伎
 LCD_ShowString(60,50,"WarShip STM32"); 
 LCD_ShowString(60,70,"RTC TEST"); 
 LCD_ShowString(60,90,"ATOM@ALIENTEK");
 LCD_ShowString(60,110,"2012/9/7"); 
 while(RTC_Init())  //RTC場宎趙 ㄛ珨隅猁場宎趙傖髡
 {
  LCD_ShowString(60,130,"RTC ERROR!   "); 
  delay_ms(800);
  LCD_ShowString(60,130,"RTC Trying..."); 
 }            
 //珆尨奀潔
 OINT_COLOR=BLUE;//扢离趼极峈懦伎     
 LCD_ShowString(60,130,"    -  -     ");   
 LCD_ShowString(60,162,"  :  :  ");      
 while(1)
 { 
     if(KEY_Scan()==2&KEY_Scan()==1)
  {       
    delay_ms(10);
    if(KEY_Scan()==2&KEY_Scan()==1)
      {

   //BKP_WriteBackupRegister(BKP_DR1, 0X5f50);
       //RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //妏夔PWR睿BKP俋扢奀笘  
       //PWR_BackupAccessCmd(ENABLE); //妏夔綴掘敵湔?溼恀
      //BKP_DeInit(); //葩弇掘爺?郖
       if(KEY_Scan()==3)
      {
       
       if(Ptimes>5)Ptimes=0;
            while(KEY_Scan()==3);
      Ptimes++;
        }
     
        if(Ptimes==0)
        {
          if(KEY_Scan()==1)calendar.sec++;
          if(KEY_Scan()==2)calendar.sec--;
          }

       if(Ptimes==1)
           {
            if(KEY_Scan()==1)calendar.min++;
            if(KEY_Scan()==2)calendar.min--;
           }

         if(Ptimes==2)
          {
           if(KEY_Scan()==1)calendar.hour++;
           if(KEY_Scan()==2)calendar.hour--;
          }

       if(Ptimes==3)
           {
            if(KEY_Scan()==1)calendar.w_date++;
            if(KEY_Scan()==2)calendar.w_date--;
             }

       if(Ptimes==4)
             {
              if(KEY_Scan()==1)calendar.w_month;
              if(KEY_Scan()==2)calendar.w_month;
             }

     if(Ptimes==5)
             {
              if(KEY_Scan()==1)calendar.w_year++;
              if(KEY_Scan()==2)calendar.w_year--;
             }
      }
      //RTC_Init();
      //(void*)RTC_Set,"u8 RTC_Set(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8 sec)",
   // RTC_WaitForLastTask();
    RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendar.sec);
     //脹渾郔輪珨棒勤RTC敵湔?腔迡紱釬俇傖
  //RTC_Set(2009,12,2,10,0,55);  //扢离奀潔 
    //RTC_ExitConfigMode(); //豖堤饜离耀宒 
    //BKP_WriteBackupRegister(BKP_DR1, 0X5050); //砃硌隅腔綴掘敵湔?笢迡?蚚誧最唗杅擂
    }
               
  if(t!=calendar.sec)
  {
   t=calendar.sec;
   LCD_ShowNum(60,130,calendar.w_year,4,16);          
   LCD_ShowNum(100,130,calendar.w_month,2,16);          
   LCD_ShowNum(124,130,calendar.w_date,2,16); 
   switch(calendar.week)
   {
    case 0:
     LCD_ShowString(60,148,"Sunday   ");
     break;
    case 1:
     LCD_ShowString(60,148,"Monday   ");
     break;
    case 2:
     LCD_ShowString(60,148,"Tuesday  ");
     break;
    case 3:
     LCD_ShowString(60,148,"Wednesday");
     break;
    case 4:
     LCD_ShowString(60,148,"Thursday ");
     break;
    case 5:
     LCD_ShowString(60,148,"Friday   ");
     break;
    case 6:
     LCD_ShowString(60,148,"Saturday ");
     break; 
   }
   LCD_ShowNum(60,162,calendar.hour,2,16);          
   LCD_ShowNum(84,162,calendar.min,2,16);          
   LCD_ShowNum(108,162,calendar.sec,2,16);
   //LED0=!LED0;
  } 
  delay_ms(10);         
 }; 
 }

进不了按键程序,红色部分,求解?

坚持学习!就能成功!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-4-24 16:12:20 | 显示全部楼层
if(KEY_Scan()==2&KEY_Scan()==1)
这个代码,你说能成立么?
KEY_Scan能同时返回1和2???
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

126

主题

820

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1683
金钱
1683
注册时间
2012-10-28
在线时间
62 小时
 楼主| 发表于 2013-4-24 16:35:43 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------多谢原子哥
while(1)
{  
             _key=KEY_Scan();
    if(P_key==3)
{   
  delay_ms(10);
  if(P_key==3)
    {

//BKP_WriteBackupRegister(BKP_DR1, 0X5f50);
     //RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //妏夔PWR睿BKP俋扢奀笘   
     //PWR_BackupAccessCmd(ENABLE); //妏夔綴掘敵湔?溼恀 
    //BKP_DeInit(); //葩弇掘爺?郖
     if(P_key==1)
   {
     
    if(Ptimes>5)Ptimes=0;
          while(P_key==1);
  times++;
     }
   
      if(Ptimes==0)
      {
        if(P_key==2)calendar.sec++;
        //if(KEY_Scan()==2)calendar.sec--;
        }

    if(Ptimes==1)
         {
          if(P_key==2)calendar.min++;
          //if(KEY_Scan()==2)calendar.min--;
         }

       if(Ptimes==2)
        {
         if(P_key==2)calendar.hour++;
         //if(KEY_Scan()==2)calendar.hour--;
        }

    if(Ptimes==3)
         {
          if(P_key==2)calendar.w_date++;
          //if(KEY_Scan()==2)calendar.w_date--;
           }

    if(Ptimes==4)
           {
            if(P_key==2)calendar.w_month;
            //if(KEY_Scan()==2)calendar.w_month;
           }

 if(Ptimes==5)
           {
            if(P_key==2)calendar.w_year++;
            //if(KEY_Scan()==2)calendar.w_year--;
           }
   }
   //RTC_Init();
   //(void*)RTC_Set,"u8 RTC_Set(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8 sec)",
 // RTC_WaitForLastTask();
  RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date,calendar.hour,calendar.min,calendar.sec);
   //脹渾郔輪珨棒勤RTC敵湔?腔迡紱釬俇傖
//RTC_Set(2009,12,2,10,0,55);  //扢离奀潔
  //RTC_ExitConfigMode(); //豖堤饜离耀宒  
  //BKP_WriteBackupRegister(BKP_DR1, 0X5050); //砃硌隅腔綴掘敵湔?笢迡?蚚誧最唗杅擂
  }
坚持学习!就能成功!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-20 22:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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