这其实是老师布置的一个作业啦~但是每一个东西做出来都会有成就感~
于是大家在新手园区一起进步吖!
注:用的都是32手册上很基础的东西、大家可以直接在资料手册上看看~
int main(void)
{
RCC_Comfiguration();
fLED_Init();
while(1)
{
fLED_Display(Keyscan());
}
}
主函数里边直接调用的按键扫描跟按键显示程序,如下(个人感觉比较复杂,如果能简单点就好了)
先是按键扫描返回键值(0~63)
uint8_t Keyscan()
{
uint8_t KeyVaule;
fGPIO_InitIn(GPIOA);
fGPIO_InitOut(GPIOB);
GPIO_Write(GPIOB, 0x0000);
if(GPIO_ReadInputData(GPIOA) == 0x00ff )
{
return 0;
}
else
{
fDelay_ms(100);
if(GPIO_ReadInputData(GPIOA) == 0x00ff )
return 0;
else
{
Keyscan_GPIOA();
}
}
fGPIO_InitIn( GPIOB);
fGPIO_InitOut(GPIOA);
if(GPIO_ReadInputData(GPIOB) == 0x00ff )
{
return 0;
}
else
{
fDelay_ms(100);
if(GPIO_ReadInputData(GPIOB) == 0x00ff )
return 0;
else
{
Keyscan_GPIOB();
}
}
KeyVaule = NumA*8 + NumB ;
return KeyVaule;
}
fGPIO_InitIn()、fGPIO_InitOut()其实就是输入输出管脚的初始化~~~关于NumA、NumB的解释是按键的行列值(0~7),直接定义全局变量,fGPIO_InitIn()、fGPIO_InitOut()里面用的~~
然后是用6位LED灯进行键值的二进制显示,这个其实就直接把函数的返回值输出到管脚口就行了、但是当时写这个时居然想了很久怎么把键值表示成二进制然后输出、、、
void fLED_Display(uint8_t Num)
{
GPIO_Write(GPIOC, Num);
}
最后由于硬件材料有限(主要是懒)、、只做了软件模拟仿真,我想放图来着emmm不会。
基于STM32的64位按键扫描显示——未来工程师的第一站
自我鼓励一下~完结 |
感谢分享