STM32G431之点灯和按键配置

2023-09-26  

  STM32系列32位微控制器基于Arm® Cortex®-M处理器,旨在为MCU用户提供新的开发自由度。它包括一系列产品,集高性能、实时功能、数字信号处理、低功耗/低电压操作、连接性等特性于一身,同时还保持了集成度高和易于开发的特点。

poYBAGN-v8SAEfwRAAEv-WDufTA803.png#pic_center

1.硬件接口

  STM32G431开发板有一个用户按钮和LED灯。
  根据原理图,LD2和PA5相连,想要点亮LED则PA5应该为高电平。

pYYBAGN-v8WAVRpyAAGgTQj67Sw828.png#pic_center

  用户按键B1和PC13相连,按下为高电平;

poYBAGN-v8WAZ6pCAACIiru_Kps887.png#pic_center

2.软件设计

2.1 芯片型号选择

  本示例所使用芯片型号为:STM32G431RBT6;128KB flash 和32KB SRAM,工作频率高达170MHz。

pYYBAGN-v8aARQOzAAF0-ZKn44w402.png#pic_center

2.2 时钟配置

poYBAGN-v8eANmHtAADVgAZ7He4753.png#pic_centerpYYBAGN-v8eAMQt_AAHzg0v28KY160.png#pic_center

2.3 GPIO配置

poYBAGN-v8iAZ7pvAAC3Wkp2SiQ218.png#pic_centerpYYBAGN-v8mAVTyJAACgv6rAu3g962.png#pic_center

2.4 生成代码

poYBAGN-v8mALv6pAADouJuYYjU309.png#pic_centerpYYBAGN-v8qAI_5YAACxlshTgRU929.png#pic_center

2.5 LED和按钮引脚配置

poYBAGN-v8qAPNjRAANYvCssSbU815.png#pic_center

2.6 获取按键值函数编写


/*获取按键值*/
uint8_t Get_KeyVal(void)
{
  uint8_t static stat=0;
  if(HAL_GPIO_ReadPin(USER_GPIO_Port,USER_Pin)==1 && stat==0)//判断按键是否按下
  {
    HAL_Delay(20);//延时消抖
    stat=1;
    if(HAL_GPIO_ReadPin(USER_GPIO_Port,USER_Pin))return 1;
  }
  else if(HAL_GPIO_ReadPin(USER_GPIO_Port,USER_Pin)==0)
  {
    stat=0;
  }
  return 0;
}


2.7 主函数


  uint8_t key;
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    key=Get_KeyVal();
    if(key)
    {
      HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
    }
  }

pYYBAGN-v8uAcrlUAAIV8LfEE6E492.png#pic_centerpoYBAGN-v82AGk-_AAshA1mcwUw922.png#pic_center


  开发板本身集成ST_Link下载器,只需安装ST_Link驱动即可直接下载。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。