【STM32+HAL库】---- GPIO按键控制LED
硬件开发板:STM32G0B1RET6
软件平台:cubemax+keil+VScode
1 新建cubemax工程
1.1 配置系统时钟RCC
时钟树配置如下,16M的HSI经PLL锁相环倍频分频处理后得到PLLCLK,以提供64M的SYSCLK,再得到64M得HCLK
1.2 配置相关GPIO引脚
LED选择PA5引脚,GPIO_Output模式
按键开关由PC13引脚控制
选择PC13引脚,GPIO_Input模式
标签命名为BUTTON
1.3 导出工程
...略
2 代码
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
if (HAL_GPIO_ReadPin(BUTTON_GPIO_Port,BUTTON_Pin)==0) /*判断按键是否按下*/
{
HAL_Delay(50); /*延时*/
if (HAL_GPIO_ReadPin(BUTTON_GPIO_Port,BUTTON_Pin)==0) /*再次判断*/
{
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
while (HAL_GPIO_ReadPin(BUTTON_GPIO_Port,BUTTON_Pin)==0); /*等待按键松开,才能跳出while*/
}
}
}
}
缺点:按键松开之前程序一直卡在while循环里,按键松开之后才能处理其他的程序,降低了CPU的效率
本文来自博客园,作者:晚风也温柔,转载请注明原文链接:https://www.cnblogs.com/zxr-blog/p/17956532