欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
STM32三鍵可調(diào)RTC源程序
[打印本頁(yè)]
作者:
派大星就是藝術(shù)
時(shí)間:
2020-4-10 23:48
標(biāo)題:
STM32三鍵可調(diào)RTC源程序
#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
作者:
admin
時(shí)間:
2020-4-11 13:36
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說(shuō)明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1