STM32 Cube IDE基础指令和操作笔记 📅 发布时间:2026/8/28 18:06:36 👁 浏览次数: 一、设置GPIO状态先在STM32 Cube IDE 中设置GPIO口为输出模式设置GPIO口标签生成代码在主函数操作输出高/低电平指令HAL_GPIO_WritePin(Label_GPIO_Port, Label_Pin, PinState)翻转GPIO指令HAL_GPIO_TogglePin(Label_GPIO_Port, Label_Pin)延时函数指令HAL_Delay(x)二、读取GPIO状态与按键控制GPIO八大模式看另一笔记先在STM32 Cube IDE 中设置GPIO口为输入模式设置GPIO口标签选择输入模式后生成代码1.浮空输入模式no Pull-up and no Pull-down等效于GPIO口是一个超大电阻并获得全部压降电压取决于外部上拉/下拉,外部电路需要有上下拉电阻2.上/下拉输入模式Pull-up/Pull-down使用stm32自带的内部上/下拉电阻外部电路无需上下拉电阻HAL_GPIO_ReadPin(LABEL_GPIO_Port, LABEL_Pin)三、简易按键消抖与按键下降沿检测在STM32 Cube IDE 中设置GPIO口为输入模式设置GPIO口标签生成代码消抖通过硬件消抖软件消抖硬件消抖是按钮并联电容软件消抖是通过延时和状态判断过滤按键抖动当我们需要通过按键切换小灯状态的时候由于按键按着的时候一直发信号不停执行切换指令所以我们还需要在代码中将if按键按下触发改为检测下降沿触发检测按键按下示例代码if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) GPIO_PIN_RESET) { HAL_Delay(10); // 按下消抖 if (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) GPIO_PIN_RESET) { HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); while (HAL_GPIO_ReadPin(KEY_GPIO_Port, KEY_Pin) GPIO_PIN_RESET){}; // 等待松手 HAL_Delay(10) // 松手消抖 } }四、中断实现按键上升沿检测在STM32 Cube IDE 中设置GPIO口为中断模式设置GPIO口标签然后在GPIO中设置中断模式为上升沿最后在NVIC中设置中断优先级让SysTick 优先级高于我们的外部中断就可以在中断函数中使用delay函数不建议仅教学生成代码在main文件同文件夹下找到stm32f1xx_it文件翻到最下面找到对应中断号对应的中断函数在中断函数中加入我们的按键检测代码就好其实不建议在中断中使用延时void EXTI15_10_IRQHandler(void) { /* USER CODE BEGIN EXTI15_10_IRQn 0 */ //消抖 if(HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin) GPIO_PIN_RESET) { HAL_Delay(10); if(HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin) GPIO_PIN_RESET) { HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin); while(HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin) GPIO_PIN_RESET){} HAL_Delay(10); } } /* USER CODE END EXTI15_10_IRQn 0 */ HAL_GPIO_EXTI_IRQHandler(KEY1_Pin); /* USER CODE BEGIN EXTI15_10_IRQn 1 */ /* USER CODE END EXTI15_10_IRQn 1 */ }