读按键数据时,输出转为输入要电位上拉:GPIO_InitStruct.Pull = GPIO_PULLUP;,可解决大问题
void DIO_Init(int state)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
if(state==0)
{
GPIO_InitStruct.Pin = DIO_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
else
{
HAL_GPIO_WritePin(GPIOA, DIO_Pin|CLK_Pin|STB_Pin, GPIO_PIN_RESET);
GPIO_InitStruct.Pin = DIO_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
}