|
- #include "delay.h"
- #include "sys.h"
- #include "oled.h"
- #include "bmp.h"
- #include "usmart.h"
- #include "rtc.h"
- #include "usart.h"
- #include "key.h"
- #include "beep.h"
- int main(void)
- {
-
- u8 t;
- u16 i=0;
- u8 key;
- vu8 time_day=1;
- vu8 time_hour=1;
- vu8 time_min=1;
- init_add();
- Stm32_Clock_Init(9); //系统时钟设置
- uart_init(72,115200); //串口初始化为115200
- usmart_dev.init(72); //初始化USMART
- delay_init(72);
- OLED_Init();
- OLED_ColorTurn(0);//0正常显示,1 反色显示
- OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
- KEY_Init();
- BEEP_Init();
- while(RTC_Init()) //RTC初始化 ,一定要初始化成功
- {
-
- OLED_ShowString(8,16,"RTC ERROR!",16);
- delay_ms(800);
- OLED_ShowString(8,32,"RTC Trying...",16);
-
- }
-
-
- while(1)
- {
-
- end:
- key=KEY_Scan(0);
-
- if(key)
- {
- switch(key)
- {
- case 1://调时间
-
- while(1)
- {
- key=KEY_Scan(0);
- switch(key)
- {
- case 1://设置day
- OLED_Clear();
- while(1)
- {
- delay_ms(1);
- i++;
- OLED_ShowString(16,20,"date:",24);
- if(i<66) OLED_ShowNum(80,20,calendar.w_date+add_calendar.day-1,2,24);
- OLED_Refresh();
- if(i<88&&i>66)
- {
-
- OLED_ShowString(80,20," ",24);
- OLED_Refresh();
-
- }
- if(i>88)i=0;
- key=KEY_Scan(0);
- switch(key)
- {
-
- case 1: goto end;
-
- case 2: add_calendar.day++;
-
- RTC->CRL|=1<<4; //允许配置
- RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date+add_calendar.day-1,calendar.hour+add_calendar.hour-1,
- calendar.min+add_calendar.min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- init_add();
- break;
- case 3:
- add_calendar.day--;
-
- RTC->CRL|=1<<4; //允许配置
- RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date+add_calendar.day-1,calendar.hour+add_calendar.hour-1,
- calendar.min+add_calendar.min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- init_add();
- break;
- }
- }
- case 2://设置hour
- OLED_Clear();
- while(1)
- {
- delay_ms(1);
- i++;
- OLED_ShowString(16,20,"hour:",24);
- if(i<66) OLED_ShowNum(80,20,calendar.hour+add_calendar.hour-1,2,24);
- OLED_Refresh();
- if(i<88&&i>66)
- {
-
- OLED_ShowString(80,20," ",24);
- OLED_Refresh();
-
- }
- if(i>88)i=0;
- key=KEY_Scan(0);
- switch(key)
- {
-
- case 1:
- add_calendar.hour++;
-
- RTC->CRL|=1<<4; //允许配置
- RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date+add_calendar.day-1,calendar.hour+add_calendar.hour-1,
- calendar.min+add_calendar.min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- init_add();
- break;
- case 2: goto end;
-
- case 3:
- add_calendar.hour--;
-
- RTC->CRL|=1<<4; //允许配置
- RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date+add_calendar.day-1,calendar.hour+add_calendar.hour-1,
- calendar.min+add_calendar.min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- init_add();
- break;
- }
- }
-
- case 3://设置min
- OLED_Clear();
- while(1)
- {
- delay_ms(1);
- i++;
- OLED_ShowString(16,20,"min:",24);
- if(i<66) OLED_ShowNum(80,20,calendar.min+add_calendar.min-1,2,24);
- OLED_Refresh();
- if(i<88&&i>66)
- {
-
- OLED_ShowString(80,20," ",24);
- OLED_Refresh();
-
- }
- if(i>88)i=0;
- key=KEY_Scan(0);
- switch(key)
- {
- case 1:
- add_calendar.min++;
-
- RTC->CRL|=1<<4; //允许配置
- RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date+add_calendar.day-1,calendar.hour+add_calendar.hour-1,
- calendar.min+add_calendar.min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- init_add();
- break;
- case 2:
- add_calendar.min--;
-
- RTC->CRL|=1<<4; //允许配置
- RTC_Set(calendar.w_year,calendar.w_month,calendar.w_date+add_calendar.day-1,calendar.hour+add_calendar.hour-1,
- calendar.min+add_calendar.min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- init_add();
- break;
- case 3: goto end;
- }
- }
-
- default: break;
-
- }
- }
- case 2://调闹钟
- while(1)
- {
- key=KEY_Scan(0);
- switch(key)
- {
- case 1://设置day
- OLED_Clear();
- while(1)
- {
- delay_ms(1);
- i++;
- OLED_ShowString(16,20,"date:",24);
- if(i<66) OLED_ShowNum(80,20,calendar.w_date+time_day-1,2,24);
- OLED_Refresh();
- if(i<88&&i>66)
- {
-
- OLED_ShowString(80,20," ",24);
- OLED_Refresh();
-
- }
- if(i>88)i=0;
- key=KEY_Scan(0);
- switch(key)
- {
-
- case 1: goto end;
-
- case 2: time_day++;
-
- RTC->CRL|=1<<4; //允许配置
- RTC_Alarm_Set(calendar.w_year,calendar.w_month,calendar.w_date+time_day-1,calendar.hour+time_hour-1,
- calendar.min+time_min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- time_day=1;
- time_hour=1;
- time_min=1;
- break;
- case 3:
- time_day--;
-
- RTC->CRL|=1<<4; //允许配置
- RTC_Alarm_Set(calendar.w_year,calendar.w_month,calendar.w_date+time_day-1,calendar.hour+time_hour-1,
- calendar.min+time_min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- time_day=1;
- time_hour=1;
- time_min=1;
- break;
- }
- }
- case 2://设置hour
- OLED_Clear();
- while(1)
- {
- delay_ms(1);
- i++;
- OLED_ShowString(16,20,"hour:",24);
- if(i<66) OLED_ShowNum(80,20,calendar.hour+time_hour-1,2,24);
- OLED_Refresh();
- if(i<88&&i>66)
- {
-
- OLED_ShowString(80,20," ",24);
- OLED_Refresh();
-
- }
- if(i>88)i=0;
- key=KEY_Scan(0);
- switch(key)
- {
-
- case 1:
- time_hour++;
-
- RTC->CRL|=1<<4; //允许配置
- RTC_Alarm_Set(calendar.w_year,calendar.w_month,calendar.w_date+time_day-1,calendar.hour+time_hour-1,
- calendar.min+time_min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- time_day=1;
- time_hour=1;
- time_min=1;
- break;
- case 2: goto end;
-
- case 3:
- add_calendar.hour--;
-
- RTC->CRL|=1<<4; //允许配置
- RTC_Alarm_Set(calendar.w_year,calendar.w_month,calendar.w_date+time_day-1,calendar.hour+time_hour-1,
- calendar.min+time_min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- time_day=1;
- time_hour=1;
- time_min=1;
- break;
- }
- }
-
- case 3://设置min
- OLED_Clear();
- while(1)
- {
- delay_ms(1);
- i++;
- OLED_ShowString(16,20,"min:",24);
- if(i<66) OLED_ShowNum(80,20,calendar.min+time_min-1,2,24);
- OLED_Refresh();
- if(i<88&&i>66)
- {
-
- OLED_ShowString(80,20," ",24);
- OLED_Refresh();
-
- }
- if(i>88)i=0;
- key=KEY_Scan(0);
- switch(key)
- {
- case 1:
- time_min++;
-
- RTC->CRL|=1<<4; //允许配置
- RTC_Alarm_Set(calendar.w_year,calendar.w_month,calendar.w_date+time_day-1,calendar.hour+time_hour-1,
- calendar.min+time_min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- time_day=1;
- time_hour=1;
- time_min=1;
- break;
- case 2:
- time_min--;
- RTC->CRL|=1<<4; //允许配置
- RTC_Alarm_Set(calendar.w_year,calendar.w_month,calendar.w_date+time_day-1,calendar.hour+time_hour-1,
- calendar.min+time_min-1,calendar.sec);
- RTC->CRL&=~(1<<4); //配置更新
- time_day=1;
- time_hour=1;
- time_min=1;
- break;
- case 3: goto end;
- }
- }
-
- default: break;
- }
- }
- default: break;
- }
- }
- //闹钟设置
- // RTC->CRL|=1<<4; //允许配置
- // RTC_Alarm_Set(2020,4,3,12,25,00);
- // RTC->CRL&=~(1<<4); //配置更新
- //
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
|
|