標(biāo)題:
基于STM32單片機(jī)的延時(shí)函數(shù)設(shè)計(jì)秒表代碼
[打印本頁]
作者:
2233587908
時(shí)間:
2023-1-12 22:38
標(biāo)題:
基于STM32單片機(jī)的延時(shí)函數(shù)設(shè)計(jì)秒表代碼
沒有使用定時(shí)器,使用的延時(shí)函數(shù)
#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 屏幕翻轉(zhuǎn)顯示
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;
}
}
復(fù)制代碼
Keil代碼下載:
秒表.7z
(195.41 KB, 下載次數(shù): 10)
2023-1-23 14:39 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1