|
- #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); //系統(tǒng)時(shí)鐘設(shè)置
- 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 屏幕翻轉(zhuǎn)顯示
- 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://調(diào)時(shí)間
-
- while(1)
- {
- key=KEY_Scan(0);
- switch(key)
- {
- case 1://設(shè)置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://設(shè)置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://設(shè)置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://調(diào)鬧鐘
- while(1)
- {
- key=KEY_Scan(0);
- switch(key)
- {
- case 1://設(shè)置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://設(shè)置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://設(shè)置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;
- }
- }
- //鬧鐘設(shè)置
- // RTC->CRL|=1<<4; //允許配置
- // RTC_Alarm_Set(2020,4,3,12,25,00);
- // RTC->CRL&=~(1<<4); //配置更新
- //
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
|
-
-
三鍵可調(diào)RTC1.0.7z
2020-4-11 00:43 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
121.5 KB, 下載次數(shù): 10, 下載積分: 黑幣 -5
|