打印

SWITCH 如何返回字符型数值

[复制链接]
454|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
你说说说说|  楼主 | 2018-6-29 14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一下是我写的4*4矩阵键盘的程序。但是函数返回的是数值型值。如何返回字符型呢?
比方说:            
   switch(GPIO_ReadInputData(GPIOC)&0xff)
{  
                                case 0x71: return 'UP'; break;
                                case 0xB1: return 'DOWN'; break;
                                case 0xD1: return 'F1'; break;
                                case 0xE1: return 'F2'; break;
}

uint8_t ReadKey(void)
{  
        uint8_t KeyValue;
        if((GPIO_ReadInputData(GPIOC)&0xff)!=0x0f)
        {  
                Delay_us(10000);//延时10ms  
                if((GPIO_ReadInputData(GPIOC)&0xff)!=0x0f)
                {  
                        GPIO_SetBits(GPIOC, GPIO_Pin_0);  
                        GPIO_ResetBits(GPIOC, GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
                        switch(GPIO_ReadInputData(GPIOC)&0xff)
                        {  
                                case 0x71: KeyValue = 1; break;
                                case 0xB1: KeyValue = 5; break;
                                case 0xD1: KeyValue = 9; break;
                                case 0xE1: KeyValue = 13; break;
                        }  
                        GPIO_SetBits(GPIOC, GPIO_Pin_1);
                        GPIO_ResetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);
                        switch(GPIO_ReadInputData(GPIOC)&0xff)
                        {  
                                case 0x72: KeyValue = 2; break;
                                case 0xB2: KeyValue = 6; break;
                                case 0xD2: KeyValue = 10; break;
                                case 0xE2: KeyValue = 14; break;
                        }  
                        GPIO_SetBits(GPIOC, GPIO_Pin_2);  
                        GPIO_ResetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3);
                        switch(GPIO_ReadInputData(GPIOC)&0xff)
                        {  
                                case 0x74: KeyValue = 3; break;
                                case 0xB4: KeyValue = 7; break;
                                case 0xD4: KeyValue = 11; break;
                                case 0xE4: KeyValue = 15; break;
                        }
                        GPIO_SetBits(GPIOC, GPIO_Pin_3);
                        GPIO_ResetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2);
                        switch(GPIO_ReadInputData(GPIOC)&0xff)
                        {  
                                case 0x78: KeyValue = 4;   break;
                                case 0xB8: KeyValue = 8;   break;
                                case 0xD8: KeyValue = 12;  break;
                                case 0xE8: KeyValue = 16;  break;
                        }  
                        GPIO_SetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3);
                        GPIO_ResetBits(GPIOC, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);  
                        while((GPIO_ReadInputData(GPIOC)&0xff)!=0x0f);
                        return KeyValue;  
                }
        }  
        return 0;
}

求大神修改一下,提点建议啊

使用特权

评论回复

相关帖子

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

本版积分规则

355

主题

355

帖子

1

粉丝