STM32實(shí)時(shí)時(shí)鐘RTC按鍵修改時(shí)間_第1頁
STM32實(shí)時(shí)時(shí)鐘RTC按鍵修改時(shí)間_第2頁
STM32實(shí)時(shí)時(shí)鐘RTC按鍵修改時(shí)間_第3頁
STM32實(shí)時(shí)時(shí)鐘RTC按鍵修改時(shí)間_第4頁
STM32實(shí)時(shí)時(shí)鐘RTC按鍵修改時(shí)間_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

User文件夾卜niaiii.c#includeHsvs.hHJ#includeHusan.hM#include"delay.h"#iiicludeHled.hn#includeHkey.hH#include"exti.h"#includeHwdg.hH#includeHtimei-x.hH#include”adc.h"#includeHrtc.hM#mcludeT2864.1T'#mcludeHov7670.ir#mcludeHusniart.hM#mcludeHenc28j60.hH#mcludeHuip.hn#mcludenuip_arp.hM#mcludeHtapdev.hM#mcludeHtimer.hH#mclude”math.h"#mcludeHstring.hH#mcludensvn.hHJ//MuuSTM32開發(fā)板擴(kuò)展實(shí)驗(yàn)21/7ENC28J60網(wǎng)絡(luò)模塊實(shí)驗(yàn)〃正點(diǎn)原子?ALIENTEK〃技術(shù)論壇:www?〃廣州市星翼電子科技有限公司voiduip_pollmg(void);voidDisplay_Time(void);voidreceived_date(u8*str);u!6Process_date(u8q.u8b,u8s,u8g);#defineBUF((stiuctuip_etlijidr*)&uip_buf[O])u8t,Addies_l=l0,Addws_2=1Addies_3=l6&Addws_4=192;iiitmaiii(void){Stm32_Clock_Imt(9);//系統(tǒng)時(shí)鐘設(shè)置//usart_imt(72、9600);〃串II初始化為9600USART3_Imt(36,9600);USART2_Imt(36,9600);delay_init(72);〃延時(shí)初始化LED_Imt();//初始化與LED連接的硬件接IILCD12864_nutPort();〃初始化LCDLCD12864_niit();//KEY.niitO;RTC_Init();usmait_dev.iiiit(72);EXTIX^InitQ;while(tapdev_uut())〃初始化按鍵//初始化RTC〃初始化USMART〃初始化ENC28J60錯(cuò)誤LCD_ShowStnng(3,0「28J60IiutError!M);delav_nis(200);LCD12864_Clr();〃清除之前顯示};uip_imtO;//uIP初始化uip_ipaddr(ipaddi;192,168,1,10);〃設(shè)置本地設(shè)置IP地址uip_sethostaddr(ipaddr);〃設(shè)置網(wǎng)絡(luò)掩碼uip_ipaddr(ipaddr.192,16〃設(shè)置網(wǎng)關(guān)IP地址(其實(shí)就是你路由器的IP地址)uip_setdiaddi(ipaddi);〃設(shè)置網(wǎng)絡(luò)掩碼uip_ipaddr(ipaddi;255,255,254.0);uip_setnetinask(ipaddi);uipJisten(HTONS(1200));uipJisten(HTONS(80));tcp_client_iecoiinect();wlule(1)〃監(jiān)聽1200端IIuipJisten(HTONS(1200));uipJisten(HTONS(80));tcp_client_iecoiinect();wlule(1)〃監(jiān)聽80端II,用于WebServer〃嘗試連接到TCPServer端,用于TCPClient{Display_Tmie();uip_pollmg();〃處理uip事件,必須插入到用戶程序的循環(huán)體中//kev=KEY.ScaiiO;if(tcp_client_tsta!=tcp_client_sta)//TCPClient狀態(tài)改變{if(tcp_client_sta&(1?7)){LCD_ShowString(3,0,”接收數(shù)據(jù)disp_IP();{LCD_ShowStnng(3Q”己斷開!M);disp_IP();}if(tcp_client_sta&(1?6))〃收到新數(shù)據(jù){//LCD12864_Clr();〃清除之前顯示received_date(tcp-client_databuf);tcp_client_sta&=、(1?6);}tcp_clienctsta=tcp_client_sta;tiiner_reset(&periodic_timer);tiiner_reset(&periodic_timer);〃復(fù)位0.5秒定時(shí)器delav_nis(l);usart3_Receive_Process();}}//Uip事件處理函數(shù)〃必須將該函數(shù)插入用戶主循壞,循壞調(diào)用.voiduip_pollmg(void){u8i;staticstmcttimerperiodic_timei;aip_tiiner;staticu8tmiei_ok=0;if(tiiner_ok==0)//僅初始化一次{tiiner_ok=1;tiiner_set(&peiiodic_timer,CLOCK_SECOND/2);〃創(chuàng)建1個(gè)0.5秒的定時(shí)器tuner_set(&aip_timer,CLOCK_SECOND*10);〃創(chuàng)建1個(gè)10秒的定時(shí)器}uip_len=tapdev_read();//從網(wǎng)絡(luò)設(shè)備讀取一個(gè)IP包,得到數(shù)據(jù)長度.uipjen在uip.c中定義if(uip_len>0)〃有數(shù)據(jù){〃處理IP數(shù)據(jù)包(只有校驗(yàn)通過的IP包才會(huì)被接收)if(BUF->type==htons(UIP_ETHTYPE_IP))//是否是IP包?{uip_aip_ipin();〃去除以太網(wǎng)頭結(jié)構(gòu),更新ARP表uip_mputQ;//IP包處理〃當(dāng)上面的函數(shù)執(zhí)行后,如果需要發(fā)送數(shù)據(jù),則全局變量uip_len>0〃需要發(fā)送的數(shù)據(jù)在uip_buf,長度是uipjen(這是2個(gè)全局變量)if(uip_len>0)//需要回應(yīng)數(shù)據(jù){uip_aip_out();//加以太網(wǎng)頭結(jié)構(gòu),在主動(dòng)連接時(shí)可能要構(gòu)造ARP請(qǐng)求tapdev_send();//發(fā)送數(shù)據(jù)到以太網(wǎng)}}elseif(BUF->type==htons(UIP_ETHTYPE_ARP))//處理aip報(bào)文,是否是ARP請(qǐng)求包?{uip_arp_arpin();〃當(dāng)上面的函數(shù)執(zhí)行后,如果需要發(fā)送數(shù)據(jù),則全局變量uip_len>0〃需要發(fā)送的數(shù)據(jù)在uip_buf,長度是uip_len(這是2個(gè)全局變量)if(uip_len>O)tapdev_send();//需要發(fā)送數(shù)據(jù),則通過tapdev_send發(fā)送}}elseif(timei_expiied(&peiiodic_timei))//0.5秒定時(shí)器超時(shí)〃輪流處理每個(gè)TCP連接,UIP_CONNS缺省是40個(gè)for(i=0;KUIP_CONNS;i++)uip_periodic(i);〃處理TCP通信事件〃當(dāng)上面的函數(shù)執(zhí)行后,如果需要發(fā)送數(shù)據(jù),則全局變量uip_len>0〃需要發(fā)送的數(shù)據(jù)在uip_buf,長度是uipjen(這是2個(gè)全局變量)if(uip_len>0){uip_aip_outO;//加以太網(wǎng)頭結(jié)構(gòu),在主動(dòng)連接時(shí)可能要構(gòu)造ARP請(qǐng)求tapdev_send();//發(fā)送數(shù)據(jù)到以太網(wǎng)}}#ifUIP_UDPZ,PIP_UDP〃輪流處理每個(gè)UDP連接,UIP_UDP_CONNS缺省是10個(gè)for(i=0;KUIP_UDP_CONNS;i-H-){uip_udp_periodic(i);〃處理UDP通信事件〃當(dāng)上面的函數(shù)執(zhí)行后,如果需要發(fā)送數(shù)據(jù),則全局變量uip_len>0〃需要發(fā)送的數(shù)據(jù)在uip_buf,長度是uipjen(這是2個(gè)全局變量)if(uip_len>0){uip_aip_outO;//加以太網(wǎng)頭結(jié)構(gòu),在主動(dòng)連接時(shí)可能要構(gòu)造ARP請(qǐng)求tapdev_send();//發(fā)送數(shù)據(jù)到以太網(wǎng)}}#endif〃每隔10秒調(diào)用1次ARP定時(shí)器函數(shù)用于定期ARP處理ARP表10秒更新一次,舊的條目會(huì)被拋棄if(timer_expired(&aip_tin】er)){timer_reset(&aip_tin】er);uip_aip_tuner();}}}voidDisplay_Time(void){if(t!=timer.sec){t=tim亡匚sec;LCD_ShowStnng(1,5昇星期J;LCD_ShowStnng(0,3「20J;LCD_Shownum(0,4,(tuner.w_yeai5<)100));LCD12684_Wdat(0x2d);LCD_Shownuml(timer.w_month);LCD12684_Wdat(0x2d);

LCD_Shownuml(timer.w_date);switch(timer.week)case0:LCD_ShowStimg(l,7/口");bieak;case1:LCD_ShowString(b7a");break;case2:LCD_ShowStnng(l,7/l~");bieak;case3:LCD_ShowStimg(l,7/fH");bieak;case4「LCD_ShowStnng(1J/1四H);break;case5:LCD_ShowString(l,7,"五”);bieak;case6:LCD_ShowString(b7,"六");break;}LCD_Shownum(1.OJiinei-.hour);LCD1268<Wdat(0x3a);LCD_Shownuml(tiineLiiiin);LCD12684_Wdat(0x3a);LCD_Shownuml(tiinei;sec);}}voidreceived_date(u8*str){u8len;len=(u8)strlen(str);switch(len)case13:Addres_4=(u8)Process_date(0Xstr[0]-0x30),str[1],str[2]);Addies_3=(u8)Process_date(0,(str[4]-0x30),str[5],str[6]);Addies_2=(u8)Process_date(0,0,str[8],str[9]);〃設(shè)置本地Addies_l=(u8)Piocess_date(0,0,str[ll].str[12]);uip_ipaddr(ipaddi;Addies_4,Addies_3,Addies_2,Addies_l);〃設(shè)置本地設(shè)置IP地址uip_sethostaddr(ipaddi);tcp_client_recoiinect();disp_IP();break;case19:RTC->CRH&=、(0X01);wlule(!(RTC->CRL&(l?5)));〃等待RTC寄存器操作完成timer.w_yeai=(sl6)Process_date(sti[0]-0x30.str[l]-0x30.sti[2],str[3]);tuner.w_month=(s8)Process_date(0.0,sti[5].sti[6]);tuner.w_date=(s8)Process_date(0.0,str[8],sti[9]);tmier.hour=(s8)Process_date(0.0,str[11],sti[12]);tiiner.miii=(s8)Process_date(0,0,str[14],str[15]);tmier.sec=(s8)Process_date(0,0,str[l7],sti[l8]);RTC_Set(tmier.w_yeai\tiiiier.w_monthjmie匚w_dat匕tim亡T?hoiu;Hme匚minlimc.sec);〃設(shè)置時(shí)間RTC->CRH|=0X01;while(!(RTC->CRL&(l?5)));〃等待RTC寄存器操作完成break;case6:case7:case8:case9:case10:case11:LCD_ShowStiing(3,5,str);Speech(sti);break;default:break;u!6Process_date(u8q.u8b,u8s,u8g)ul6temp;temp=q*1000+b*100+(s-0x30)*10+(g-0x30);returntemp;HARDWARE文件夾下rtc。C文件#includeHsvs.hnJ#include',rtc.hM#includeHdelav.hH^includeHusan.hM〃本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途"MiniSTM32開發(fā)板"RTC實(shí)時(shí)時(shí)鐘驅(qū)動(dòng)代碼//正點(diǎn)原子?ALIENTEK〃技術(shù)論壇:〃修改口期:2010/12/30〃版本:VI.1〃版權(quán)所有,盜版必究。//Copyriglit(C)正點(diǎn)原子2009-2019

//Alllightsreseived〃*****************************************************************************.Wl.l修改說明〃修改了RTC.Iiut函數(shù)分頻設(shè)置無效的bug〃修改了RTC_Get函數(shù)的一個(gè)bug///////////////////////////////////////////////////////////////////////////////////.'MuuSTM32開發(fā)板//RTC實(shí)時(shí)時(shí)鐘驅(qū)動(dòng)代碼//正點(diǎn)原子?ALIENTEK//2010/6/6tmtimer;//時(shí)鐘結(jié)構(gòu)體〃實(shí)時(shí)時(shí)鐘配置〃初始化RTC時(shí)鐘,同時(shí)檢測(cè)時(shí)鐘是否工作正常//BKP->DR1用于保存是否第一次配置的設(shè)置〃返回0:正常〃其他:錯(cuò)誤代碼u8RTC_Iiiit(void){〃檢查是不是第一次配置時(shí)鐘u8temp=0:if(BKP->DRl!=OX5O5O)//第一次配置RCC->APB1RCC->APB1ENR|=1?28;RCC->APBlENR|hl?27;PWR?>CR|=1?8;RCC->BDCR|=1?16;RCC->BDCR&=-(1?16);RCC->BDCR|=1?O;〃使能電源時(shí)鐘//使能備份時(shí)鐘〃取消備份區(qū)寫保護(hù)〃備份區(qū)域軟復(fù)位〃備份區(qū)域軟復(fù)位結(jié)束〃開啟外部低速振蕩器while((!(RCC->BDCR&0X02))&&temp<250)//等待外部時(shí)鐘就緒temp++;delav_nis(10);};if(temp>=250)return1;//初始化時(shí)鐘失敗,晶振有問題RCC->BDCR|=1?8;//LSI作為RTC時(shí)鐘RCC->BDCR|=1?15;//RTC時(shí)鐘使能while(!(RTC->CRL&(1?5)));//等待RTC寄存器操作完成while(!(RTC->CRL&(1?3)))^/等待RTC寄存器同步RTC->CRH|=0X01;〃允許秒中斷while(!(RTC->CRL&(1?5)))^/等待RTC寄存器操作完成RTC->CRL|=1?4;〃允許配置RTC>PRLH=OXOOOO;RTC->PRLL=32767;〃時(shí)鐘周期設(shè)置(有待觀察,看是否跑慢了?)理論值:32767Auto_Tiine_SetQ;〃RTC_S雜(2009,12210,0,55);//設(shè)置時(shí)間RTC->CRL&=?(1?4);〃配置更新while(!(RTC->CRL&(1?5)));〃等待RTC寄存器操作完成BKP->-DRl=OX5O5O;//BKP_Wnte(l,0X5050);;//在寄存器1標(biāo)記已經(jīng)開啟了//printf(HFIRSTTIMEnH);}else//系統(tǒng)繼續(xù)計(jì)時(shí){while(!(RTC->CRL&(1?3)))^/等待RTC寄存器同步RTC->CRH|=0x01;〃允許秒中斷while(!(RTC->CRL&(1?5)));〃等待RTC寄存器操作完成//pmitfCOKE);}MY_NVIC_Imt(0QRTC_IRQClKinneh2);〃RTGG2f2,S2?優(yōu)先級(jí)最低RTC_Get()y/更新時(shí)間return0;//ok}//RTC中斷服務(wù)函數(shù)//constu8*Week[2][7]=//{//{,,Simday,\nMonday'\',Tuesday,\HWednesday,7,Thuisday,\',Fnday,7,SanudayM},//{"□v一","二”,"三",”四“,”五六”}//};“RTC時(shí)鐘中斷〃每秒觸發(fā)一次voidRTC_IRQHandler(void){if<RTC->CRL&0x0001)〃秒鐘中斷{RTC.GetQ;//更新時(shí)間//pnntf(HCRL:%d\n\RTC->CRL);}if<RTC->CRL&0x0002)〃鬧鐘中斷//pnntf(HAlann!\nM);RTC->CRL&=?(0x0002);〃清鬧鐘中斷〃鬧鐘處理}RTC->CRL&=OXOFFA;〃清除溢出,秒鐘中斷標(biāo)志while(!(RTC->CRL&(l?5)));//等待RTC寄存器操作完成}〃判斷是否是聞年函數(shù)〃月份123456789101112〃閏年312931303130313130313031〃非閏年312831303130313130313031〃輸入:年份〃輸出:該年份是不是閏年.1,是.0,不是u8Is_Leap_Year(u16year){if(veai^o4=0)//必須能被4整除{if(year%100==0){if(year%400==0)return1;//如果以00結(jié)尾,還要能被400整除elseletuin0;}elsereturn1;}elsereturn0;}〃設(shè)置時(shí)鐘〃把輸入的時(shí)鐘轉(zhuǎn)換為秒鐘〃以1970年1月1口為基準(zhǔn)//1970-2099年為合法年份〃返回值:0,成功;其他:錯(cuò)誤代碼.〃月份數(shù)據(jù)表u8consttable_week[12]={0,3,3,6,1,4,6,2,5,03,5};//月修正數(shù)據(jù)表〃平年的月份口期表constu8mon_table[12]={31,28,31,30,31,30,3131,30,31,30,31};u8RTC_Set(ul6syeai\u8smon.uSsday,u8houi;u8iniiiAi8sec){ul6t;u32seccount=0;if(syear<1970|syear>2099)return1;for(t=197O;t<syear;t++)〃把所有年份的秒鐘相加{if(Is_Leap_Yeai(t))seccount+=31622400;//閏年的秒鐘數(shù)elseseccount+=31536000;〃平年的秒鐘數(shù)}smon-=l;for(t=0;t<smon;t-H-)〃把前面月份的秒鐘數(shù)相加

月份增加一天的秒鐘數(shù)seccount+=(u32)mon_table[t]*86400//月份秒鐘數(shù)相加if(Is_Leap_Yeai(syeai)&&t==l)seccoiint+=86400;//閏年月份增加一天的秒鐘數(shù)}seccount+=(u32)(sday-1)*86400;//把前面日期的秒鐘數(shù)相加seccount+=(u32)hom*3600;//小時(shí)秒鐘數(shù)seccount+=(u32)niin*60;〃分鐘秒鐘數(shù)seccount+=sec//最后的秒鐘加上去〃設(shè)置時(shí)鐘RCC->APB1ENR|=1?28;〃使能電源時(shí)鐘RCC->APB1ENR|=1?27;〃使能備份時(shí)鐘P\\K->CR|=1?8;〃取消備份區(qū)寫保護(hù)〃上面三步是必須的!RTC->CRL|=1?4;〃允許配置RTC->CNTL=seccount&Oxffif;RTC->CNTH=seccount?16;RTC->CRL&=?(1?4)^/配置更新while(!(RTC->CRL&(l?5)));//等待RTC寄存器操作完成retuin0;}〃得到當(dāng)前的時(shí)間〃返回值:0,成功;其他:錯(cuò)誤代碼.u8RTC_Get(void){staticul6daycnt=0;u32tmiecount=0;u32temp=0;ul6temp1=0;tunecount=RTC->CNTH;//得到計(jì)數(shù)器中的值(秒鐘數(shù))tiinecount?=16;tiinecount+=RTC->CNTL;temp=timecount/86400;〃得到天數(shù)(秒鐘數(shù)對(duì)應(yīng)的)if(davcnt!=temp)//超過一天了{(lán)davcnt=temp;templ=1970;〃從1970年開始while(temp>=365){if(Is_Leap_Yeai(tenip1))〃是閏年if(temp>=366)temp-=366;//閏年的秒鐘數(shù)}}elsebreak;}elsetemp?=365;〃平年templ++;tmi亡匚w_yeai-temp1;〃得到年份temp1=0;while(temp>=28)//超過了一個(gè)月{if(Is_L亡ap_Y亡ar(timeT?w_yeai)&&templ==l)//當(dāng)年是不是閏年/2月份{if(temp>=29)temp-=29y/閏年的秒鐘數(shù)elsebreak;}else{if(temp>=mon_table[tenip1])temp-=mon_table[temp1];〃平年elsebreak;}templ++;}tuner.w_month=temp1+1;〃得到月份tuner.w_date=temp+1;〃得到口期}temp=timecount%86400;〃得到秒鐘數(shù)tmier.hour=temp/3600;〃小時(shí)tmier.niui=(temp%3600)/60;〃分鐘tuner.sec=(temp%3600)%60;〃秒鐘tmier.week=RTC_Get_Week(tmier.w_yeai;timer.w_month,tmier.w_date);//^MX星期retuin0;}〃獲得現(xiàn)在是星期幾//功能描述:輸入公歷口期得到星期(只允許1901-2099年)〃輸入?yún)?shù):公歷年月口〃返回值:星期號(hào)u8RTC_Get_Week(u16year,u8months8day){ul6temp2;u8yeaiH.yearL;yeaiH=veai7100;yearL=yeai-%100;//如果為21世紀(jì),年份數(shù)加100if(yeaiH>1刃yearL+=100;//所過閏年數(shù)只算1900年之后的temp2=veaiL+vearL/4;temp2=temp2%7;temp2=temp2+day+table_week[month-l];if(yearL%4==0&&month<3)temp2~;retum(temp2%7);}〃比較兩個(gè)字符串指定長度的內(nèi)容是否相等〃參數(shù):sl,s2要比較的兩個(gè)字符串;len,比較長度//返回值:1,相等;0,不相等u8str_cmpx(u8*s1,u8*s2,u8len){u8i;fbr(i=O;i<len;i++)if((*s1++)!=*s2++)return0;return1;}externconstu8*COMPILED_DATE;//獲得編譯口期externconstu8*COMPILED_TEvIE;//獲得編譯時(shí)間constu8Month_Tab[12][3]={,7an^Teb^HMar^HApi^nMay^,7im^,7ul^MAug^HSep^nOct^HNov^,,DecH};//自動(dòng)設(shè)置時(shí)間為編譯器時(shí)間voidAuto_Tmie_Set(void){u8temp[3];u8i;u8monJate;ul6year;u8secjniii,hour;fbi(i=0;i<3;i^)temp[i]=CONIPILED_DATE[i];fbr(i=0;i<12;i-H-)if(sti_cmpx((u8*)Month_Tab[i],temp,3))break;mon=i+l;〃得到月份if(COMPILED_DATE[4]==,,)date=CONIPILED_DATE[5]-,0,;elsedate=10*(COMPILED_DArE[4]-,0,)+COMPILED_DArE[5]-,0t;y亡a尸1000*(COMPILED_DATE[7]-,0,)+100*(COMPILED_DATE[8]-,0t)+10*(COMPILED_DATE[9]?O)+COMPILED_DATE[10]?'0;hou尸10*(COMPILED_TIME[0]J(T)+COMPILED_TIME[1卜0:niHi=10*(CONIPILED_TIME[3]-,0,)+COMPILED_TEvIE[4]-,0,;sec=10*(COMPILED_TEviE[6]-,0,)+COMPILED_TIME[7].,0,;RTC_Set(year4iion.date.houi\niiii,sec);//printf(H%d-%d-%d%d:%d:%d\n,\year5mon,date,hour^nin,sec);Hardware文件夾卜exit。C#include"exti.h"#iiicludeHled.hn#includeHkey.hH#include"delay.h”#includenusan.hM#mcludeT2864.1T'^includenitc.hM/〃////〃/////////////////////////////////////////////////////////////////////////〃本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途"MiniSTM32開發(fā)板〃外部中斷驅(qū)動(dòng)代碼〃正點(diǎn)原子?ALIENTEK〃技術(shù)論壇:〃修改日期:2010/12/01〃版本:V1.0〃版權(quán)所有,盜版必究。//Copyright(C)正點(diǎn)原子2009-2019//Allrightsreseived/////////////////////////////////////////////////////〃外部中斷0服務(wù)程序voidEXTIO_IRQHandler(void){delay_ms(100);//消抖if(KEY2==l)〃按鍵2{count-H-;if(count<7){while(!(RTC->CRL&(l<今)))〃等待RTC寄存器同步RTC->CRH&s(0X01);〃允許秒中斷whde(!(RTC->CRL&(1?5)));〃等待RTC寄存器操作完成}switch(count){case1:LCD_ShowStiing(2,4「設(shè)置秒M);break:case2:LCD_ShowStiing(2,4/'設(shè)置分n);break;case3:LCD_ShowString(2,4J設(shè)置時(shí)H);break;case4:LCD_ShowSumg(2,4「設(shè)置日n);break;case5:LCD_ShowString(2,4J設(shè)置月n);break;case6:LCD_ShowString(2,4J設(shè)置年n);break;case7{RTC_Set(tmier.w_yeai;timer.w_nionth.timeLW_date,timer.houijmier.iiiin,timer.sec);wlule(!(RTC->CRL&(1<今)))〃等待RTC寄存器同步RTC->CRH|=OXO1;〃允許秒中斷wlule(!(RTC->-CRL&(1?5)));〃等待RTC寄存器操作完成LCD_ShowStiing(2,4,”設(shè)置IP”);LCD_ShowStnng(3Q”>”);disp_IP0;}bieak;case8:LCD_ShowStnng(3,0,H?H);break;case9:LCD_ShowStnng(3,0,H?>n);bieak;case10:LCD-ShowStnng(3.0;,??H);break;case11:coimt=0;LCD_ShowSt【ing(3,0異”);LCD_Sho\vStiing(2,4,”M);break;}}EXTI->PR=l?0;〃清除LINEO上的中斷標(biāo)志位}〃外部中斷15?10服務(wù)程序voidEXTI15_10_IRQHandler(void){delay_ms(100);〃消抖if(KEY0==0)〃按鍵0{LED1=!LED1;switch(count)TOC\o"1-5"\h\zcase1:tmier.sec—;if(timer.sec==0)tiineLsec=59;LCD_Shownum(l,4,tmier.sec);LCD_ShowStnng(2,7?H-n);break;case2:tmier.niin-;if(timer.niin==0)timer.niHi=59;LCD_Shownum(l,2jmier.niui);LCD_ShowStimg(2,7,??-H);bieak;case3:tmier.houi-;if(timer.hom—0)tuner.houi=12;LCD_Shownum(h0juner.hoiu);LCD_ShowStnng(2,7,”」);beak;case4:tmier.w^date—;if(tiiner.w_date==0)tmier.w_date=31;LCD_Shownum(0,4Juuer.w_date);LCD_ShowStrmg(2J;,-,F);break;case5:tuner.w_month-;if(tuiier.w_month=0)tmier.w-month=12;LCD_Shownum(0,2,tmier.w_month);LCD_ShowString(2,7,"」);bieak;case6:tuner.w_year-;if(timer.w_yeai-==0)tuneLW_yeai-2099;LCD_Shownum(0,0,(timer.w_year%100));LCD_ShowStiing(2J;t-,,);break;case7:Addies_l-;if(Addres_l=O)Addies_l=99;disp_IP();bieak;case8:Addies_2-;if(Addres_2=0)Addies_2=9;disp_IP0;bieak;case9:Addies_3-;if(Addres_3=0)Addies_3=200;disp_IP();break;case10:Addres_4-;if(Addres_4==0)Addres_4=200:disp_IP();break;}}elseif(KEYl==0)//按鍵1{LED0=!LED0;switch(count){TOC\o"1-5"\h\zcase1tmier.sec-H-;if(timer.sec==60)timeLsec=0;LCD_Shownum(h4jHiie匚s亡c);LCD_ShowStiing(2,7r+M);break;case2:tmier.niin++;if(tmier.min=60)tmieLniui=0;LCD_Shownum(l,2jmier.niHi);LCD_ShowStrmg(2,7「+”);break;case3:tmier.hour-H-;if(tuiier.houi==12)timer.hour=0;LCD_Shownum(1,Ojmier.hour);LCD_ShowStrmg(2J;,+,r);break;case4:timer.w_date-H-;if(timeLW_date=32)tuiier.w_date=0;LCD_Shownuni(0,4Jinier.w_date);LCD_ShowSumg(2,7/+H);break;case5:tmier.w_month++;if(tuiier.w_month=32)timeLW_montli=0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論