GPIO写入操作
//未在CubeMX内编辑IO口定义情况
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
//第一位写入GPIO分类,第二位写入GPIOpin口,第三位为高低电平(GPIO_PIN_SET为高电
//平GPIO_PIN_RESET为低电平)
//在CubeMX内编辑IO口定义情况
HAL_GPIO_WritePin("端口定义名称"_GPIO_Port, "端口定义名称"_Pin, GPIO_PIN_SET);
//写入格式为定义名称+_GPIO_Port&Pin.
//例如HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
GPIO读取操作
//未在CubeMX内编辑IO口定义情况
HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
//在CubeMX内编辑IO口定义情况
HAL_GPIO_ReadPin("端口定义名称"_GPIO_Port, "端口定义名称"_Pin);
//例如HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin);
//ReadPin指令返回值为GPIO_PIN_SET&GPIO_PIN_RESET
//判断GPIO示例程序
if (HAL_GPIO_ReadPin(KEY_GPIO_Port, LED_Pin)==GPIO_PIN_RESTE){
HAL_GPIO_WritePin(LED_GPIO_Port,LED_GPIO_Pin,GPIO_PIN_SET);
}else{
HAL_GPIO_WritePin(LED_GPIO_Port,LED_GPIO_Pin,GPIO_PIN_RESET);
}//判断按键是否按下使LED灯实现按下点亮松开熄灭
GPIO电平翻转指令
HAL_GPIO_TogglePin(KEY_GPIO_Port, KEY_Pin);
//实现GPIO电平反转1=>0,0=>1
//示例1无消抖
if (HAL_GPIO_ReadPin(KEY_GPIO_Port, LED_Pin)==GPIO_PIN_RESTE)
{
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_GPIO_Pin);
//当KEY按下时LED电平反转
while(HAL_GPIO_ReadPin(KEY_GPIO_Port, LED_Pin)==GPIO_PIN_RESTE)
//检测KEY是否松开,松开则打破循环
}
//示例2有消抖
if (HAL_GPIO_ReadPin(KEY_GPIO_Port, LED_Pin)==GPIO_PIN_RESTE)
{
HAL_Delay(10);
//等待10ms
if (HAL_GPIO_ReadPin(KEY_GPIO_Port, LED_Pin)==GPIO_PIN_RESTE)
//检测10ms消抖后按键是否仍为按下状态
{
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_GPIO_Pin);
//当KEY按下时LED电平反转
while(HAL_GPIO_ReadPin(KEY_GPIO_Port, LED_Pin)==GPIO_PIN_RESTE)
//检测KEY是否松开,松开则打破循环
}
}
Comments NOTHING