麻烦各位帮忙看看 #include "KEY.h" #define KEY_PIN_1 GPIO_PIN_0 #define KEY_PIN_2 GPIO_PIN_1 #define KEY_PIN_3 GPIO_PIN_2 #define KEY_PIN_4 GPIO_PIN_3 #define KEY_PIN_5 GPIO_PIN_4 #define KEY_PIN_6 GPIO_PIN_5 #define KEY_PIN_7 GPIO_PIN_6 #define KEY_PIN_8 GPIO_PIN_7 #define KEY_PIN_ALL KEY_PIN_1|KEY_PIN_2|KEY_PIN_3|KEY_PIN_4|KEY_PIN_5|KEY_PIN_6|KEY_PIN_7|KEY_PIN_8 #define KEY_PORT GPIOB void GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); //__HAL_RCC_GPIOH_CLK_ENABLE(); GPIO_InitStruct.Pin = KEY_PIN_1|KEY_PIN_2|KEY_PIN_3|KEY_PIN_4; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(KEY_PORT, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); GPIO_InitStruct.Pin = KEY_PIN_5|KEY_PIN_6|KEY_PIN_7|KEY_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; //GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(KEY_PORT, &GPIO_InitStruct); } unsigned char HL_Scan(void) { unsigned char KeyVal=0; unsigned key=0; //unsigned int WriteVal=0; if(key==0) { HAL_GPIO_WritePin(KEY_PORT,KEY_PIN_1|KEY_PIN_2|KEY_PIN_3|KEY_PIN_4,GPIO_PIN_SET); if(HAL_GPIO_ReadPin(KEY_PORT,KEY_PIN_5|KEY_PIN_6|KEY_PIN_7|KEY_PIN_8)==0) { key=0; return 0; } else { HAL_Delay(5); if(HAL_GPIO_ReadPin(KEY_PORT,KEY_PIN_5|KEY_PIN_6|KEY_PIN_7|KEY_PIN_8)==0) { key=0; return 0; } else key=1; } } if(key==1) { HAL_GPIO_WritePin(KEY_PORT,KEY_PIN_1,GPIO_PIN_SET); HAL_GPIO_WritePin(KEY_PORT,KEY_PIN_2|KEY_PIN_3|KEY_PIN_4,GPIO_PIN_RESET); switch(HAL_GPIO_ReadPin(KEY_PORT,KEY_PIN_5|KEY_PIN_6|KEY_PIN_7|KEY_PIN_8)&0xf0) { case 0x10: KeyVal=15; break; case 0x20: KeyVal=11; break; case 0x40: KeyVal=7; break; case 0x80: KeyVal=3; break; } HAL_GPIO_WritePin(KEY_PORT,KEY_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(KEY_PORT,KEY_PIN_1|KEY_PIN_3|KEY_PIN_4,GPIO_PIN_RESET); switch(HAL_GPIO_ReadPin(KEY_PORT,KEY_PIN_5|KEY_PIN_6|KEY_PIN_7|KEY_PIN_8)&0xf0) { case 0x10: KeyVal=14; break; case 0x20: KeyVal=10; break; case 0x40: KeyVal=6; break; case 0x80: KeyVal=2; break; } HAL_GPIO_WritePin(KEY_PORT,KEY_PIN_3,GPIO_PIN_SET); HAL_GPIO_WritePin(KEY_PORT,KEY_PIN_1|KEY_PIN_2|KEY_PIN_4,GPIO_PIN_RESET); switch(HAL_GPIO_ReadPin(KEY_PORT,KEY_PIN_5|KEY_PIN_6|KEY_PIN_7|KEY_PIN_8)&0xf0) { case 0x10: KeyVal=13; break; case 0x20: KeyVal=9; break; case 0x40: KeyVal=5; break; case 0x80: KeyVal=1; break; } HAL_GPIO_WritePin(KEY_PORT,KEY_PIN_4,GPIO_PIN_SET); HAL_GPIO_WritePin(KEY_PORT,KEY_PIN_1|KEY_PIN_2|KEY_PIN_3,GPIO_PIN_RESET); switch(HAL_GPIO_ReadPin(KEY_PORT,KEY_PIN_5|KEY_PIN_6|KEY_PIN_7|KEY_PIN_8)&0xf0) { case 0x10: KeyVal=12; break; case 0x20: KeyVal=8; break; case 0x40: KeyVal=4; break; case 0x80: KeyVal=0; break; } key=0; } return KeyVal; } |
STM32L011D4芯片用SWD无法下载程序
求助:STM32L0系列标准库哪里下?
STM32L051低温时LPUART串口波特率异常
STM32L051单片机ADC如何彻底关闭?
STM32L051C8进入低功耗模式电流偏大
STM32L052C8T6通过I2C模拟读16位数
STM32L0的VLCD外接5V会有问题吗
求助!!使用STM32L073 IO口模拟IIC接口读写AT24CM01 程序不停...
STM32L072RB写Bank2 EEPROM不响应中断
STM32L031无法进入boot
评分
查看全部评分
评分
查看全部评分
你说的是输入改成上拉,还是输出改成上拉?外部没有上拉电阻
我用万用表测管脚的电压是正确的,可结果读取管脚高低电平的时候就是进不了swicth语句。。。
是不是switch(HAL_GPIO_ReadPin(KEY_PORT,KEY_PIN_5|KEY_PIN_6|KEY_PIN_7|KEY_PIN_8)&0xf0)我这句代码出问题了
评分
查看全部评分
评分
查看全部评分