打印

基于STM32的64位按键扫描显示

[复制链接]
977|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LY—倏尔|  楼主 | 2018-11-6 20:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这其实是老师布置的一个作业啦~但是每一个东西做出来都会有成就感~
于是大家在新手园区一起进步吖!
注:用的都是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位按键扫描显示——未来工程师的第一站
自我鼓励一下~完结
评论
dirtwillfly 2018-11-9 21:05 回复TA
感谢分享 

相关帖子

沙发
自行车VB你们| | 2018-12-20 09:25 | 只看该作者
大佬,太厉害了! 666

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝