昨天晚上老大回来看我频繁使用寄存器写程序给出指点,告诉我尽量使用库函数,少使用寄存器,毕竟寄存器在后面使用的时候还要一个一个查找手册可能太麻烦了,nice!
这次使用库函数操作键盘,很基础的实验,其中掺杂了之前的蜂鸣器和LED内容。
感觉基础键盘实验比较有价值的还是那个键盘操作函数,以下给出标准模板,mode作为参数时置0为不支持连续摁键,置1时为支持连续摁键。
//摁键函数,0为不支持连摁,1为支持连摁
u8 Key_Scan(u8 mode)
{
static u8 flag = 1;
if(mode) flag = 1;
if(flag && (KEY0 == 0 || KEY1 == 0 || KEY2 == 0 || WK_UP == 1)) {
flag = 0;
if(KEY0 == 0) return 1;
else if(KEY1 == 0) return 2;
else if(KEY2 == 0) return 3;
else if( WK_UP == 1) return 4;
} else if(KEY0 == 1 && KEY1 == 1 && KEY2 == 1 && WK_UP == 0) flag = 1;
return 0;
}
其余的无非是RCC时钟使能、GPIO初始化、各个功能的初始化、执行相关功能的操作,以下主要给出key.h、key.c、main.c