1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
秒表
/普通按键初始化函数****
delay_ms(10);//消抖 if(key10){ //按键1 key1=1; second = 0; minute = 0; hour = 0; while(1){ DisplayDigitalClock(hour, minute, second); delay_ms(10);//消抖 t=KeyScan(); if(t2){ timeRec[0][count] = hour; timeRec[1][count] = minute; timeRec[2][count] = second; count++; // 记录时间个数+1 actCount = count-1; //actCount表示实际记录的时间个数 EXTI->PR=1<<1; //清除LINE1上的中断标志位 } } } EXTI->PR=1<<2; //清除LINE2上的中断标志位 } void EXTI0_IRQHandler(void){ delay_ms(10);//消抖 if(key30){ //按键3 while(1){ DisplayDigitalClock(hour, minute, second); //计时停在当前计时时间 t=KeyScan(); if(t2){ //先翻看前一个记录时间 while(1){ DisplayDigitalClock(timeRec[0][count], timeRec[1][count], timeRec[2][count]); if(t2){ if(count>0){ //判断记录下限 –count; } EXTI->PR=1<<1;//清除LINE1上的中断标志位 } if(t3){ if(count ++count; } EXTI->PR=1<<0;//清除LINE0上的中断标志位 } t=KeyScan(); } } } } EXTI->PR=1<<0; //清除LINE0上的中断标志位 } 万年历 /// 注释部分为功能2【万年历】部分的代码 // 判断是否为闰年 int IsLeapYear(int year){ if((year%4 == 0 && year%100 != 0) || year %400 == 0){ return 1; } return 0; } // 对day++的合法性做判断 void JudgeDay(){ int i; for(i=0; i<12; i++){ if(i0||i2||i4||i6||i7||i9||i11){ //31天的月份 if((day>31)&&(curMonthi)){ day=1; curMonth++; if(curMonth13){ curMonth=1; year++; } } }else if(i1){ if(day>28&&(curMonth==2)){ //2月 if(IsLeapYear(year)0){ //且不是闰年 day=1; curMonth=3; } } }else { // 30的月份 if((day>30)&&(curMonthi+1)){ day=1; curMonth++; } } } } // 对day–的合法性的操作 void JudgeDay2(){ int i; if(day0){ for(i=0; i<12; i++){ if(i0||i2||i4||i6||i7||i9||i11){ day=31; }else if(i==1){ if(IsLeapYear(year)==1){ day=29; }else { day=28; } }else { day=30; } } } } void TIM3_IRQHandler( void ) { if( TIM3->SR & 0x0001) //溢出中断 { second++; if( second>59 ) { second = 0; minute++; if( minute>59 ) { minute = 0; hour++; if( hour>23 ) { hour = 0; day++; JudgeDay(); } } } } TIM3->SR &= ~(1<<0); //清除中断标志位 } // 处理按键3切换时间和日期的终端函数 void EXTI0_IRQHandler(void){ u8 t , cnt = 0; delay_ms(10);//消抖 if(key30){ //按键3 while(1){ t = KeyScan(); if(t3){ cnt++; if(cnt7) break; } if(cnt>3) DisplayDigitalClock2(); else DisplayCalendar(year, curMonth, day); if(t2){// 加操作 if(cnt1) year++; else if(cnt2){ curMonth++; if(curMonth13){ curMonth=1; year++; } }else if(cnt3){ day++; JudgeDay(); }else if(cnt>3){ if(cnt4){ hour++; if( hour>23 ){ hour = 0; day++; JudgeDay(); } }else if(cnt5){ minute++; if( minute>59 ){ minute = 0; hour++; if( hour>23 ){ hour = 0; day++; JudgeDay(); } } }else if(cnt6){ second++; if( second>59 ){ second = 0; minute++; if( minute>59 ) { minute = 0; hour++; if( hour>23 ){ hour = 0; day++; JudgeDay(); } } } } } }else if(t1){// 减操作 if(cnt1) year–; else if(cnt2) { curMonth–; if(curMonth0) {curMonth=12;year–;} }else if(cnt3){ day–;JudgeDay2(); }else if(cnt>3){ if(cnt4){ if( hour0 ){hour=23; } else { hour–;} }else if(cnt5){ if( minute0 )minute=59; else minute–; }else if(cnt6){ if(second0){ second=59;} else { second–; } } } } } } EXTI->PR=1<<0; //清除LINE0上的中断标志位 } |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1817 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1103 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
739 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1692 浏览 2 评论
1951浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
756浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
586浏览 3评论
605浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
568浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 20:47 , Processed in 0.651663 second(s), Total 48, Slave 42 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号