没有使用定时器,使用的延时函数
- #include "delay.h"
- #include "sys.h"
- #include "oled.h"
- #include "bmp.h"
- #define key1 (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8))
- #define key2 (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9))
- void GPIO_Config(void)
- {
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
- GPIO_InitTypeDef GPIO_InitStructure;
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
- GPIO_Init(GPIOB, &GPIO_InitStructure);
- }
- int main(void)
- {
- u8 t=' ';
- delay_init();
- GPIO_Config();
- OLED_Init();
- OLED_ColorTurn(0);//0正常显示,1 反色显示
- OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
-
- int en = 0;
- int savetim = 0;
- int tim=0;int slptim = 0;
- char ketd; char ketd2 = 0;
- while(1)
- {
- delay_ms(10);
- if(en) tim=tim+1;
- ketd = ((key1==0x00)?0x01:0x00) | ((key2==0x00)?0x02:0x00);
- if((ketd2 ==0x00) && ((ketd & 0x01) == 0x01) ) // 暂停 开始
- {
- en = !en;
- ketd2 = 0x01;
- }else if((ketd2 ==0x00) && ((ketd & 0x02) == 0x02)) // 保存
- {
- savetim = tim;
- ketd2 = 0x02;
- }else if(ketd == 0x00){ketd2 = 0x00;}
-
- if(slptim == 0) {
- char chr[15]; //55:55:55
- sprintf(chr,"%02d:%02d.%02d",(int)((tim/600)%60),(int)((tim/100)%60),tim%100);
- OLED_ShowString(0,4,chr,24,1);
- memset(chr,0,15);
- sprintf(chr,"%02d:%02d.%02d",(int)((savetim/600)%60),(int)((savetim/100)%60),savetim%100);
- OLED_ShowString(0,30,chr,24,1);
- OLED_Refresh();
- }
- slptim = (slptim++)>5?0:slptim;
- }
- }
复制代码
Keil代码下载:
秒表.7z
(195.41 KB, 下载次数: 10)
|