STM32F103R6实现按键控制LED灯仿真

该博客详细介绍了如何使用STM32F103R6单片机通过CUBEMAX配置系统时钟和I/O,设置PC0为LED灯控制输出,PC1为按键输入。在Keil软件中编写了检测按键并控制LED灯闪烁的代码,并在Protues环境中进行了仿真验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.利用CUBEMAX来配置系统时钟

2.利用CUBEMAX来配置输入及输出

PC0输出模式(输出控制LED灯),PC1输入模式(用于按键检测)

3.Keil 软件功能代码部分,实现按键的检测及LED灯控制

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_1)==0)  //判断按键是否被按下,按下为低电平
		{
			HAL_Delay(20);  //软件消抖
			if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_1)==0)  //再次判断按键是否被按下,按下为低电平
			{
				HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_0);  //PC0电平反转
				while(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_1)==0);  //阻塞
				HAL_Delay(20);  //软件消抖
			}
			
		}
		/* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

4.Protues仿真

实现按键控制LED灯闪烁