STM32G0学习手册——点亮LED(GPIO用法HAL库)

新建CubeMX工程

这片文章中,我们使用芯片自带的HSI时钟,所以不需要配置时钟树,使用默认频率(16MHz),以便理解步骤。

  • 打开SWD调试接口
  • 在引脚视图中,点击PC6,选择"GPIO_Output"。在配置页中选择GPIO-PC6。(LED灯是接到PC6引脚的)

STM32G0学习手册——点亮LED(GPIO用法HAL库)_第1张图片

  • 配置引脚属性 

GPIO output level:默认输出电平。Hight和Low

GPIO mode :设置引脚输出模式。有推挽和开漏

GPIO Pull-up/Pull-down:设置上下拉。

Maximum output speed:设置引脚速度。有四个等级。

User Label:设置用户标签。相当于自己命名引脚。比如设置LED6,在MDK软件里LED6_Pin,就是这个引脚。自定义引脚格式为*_Pin。

STM32G0学习手册——点亮LED(GPIO用法HAL库)_第2张图片

  • 生成代码后,使用MDK软件工程,在魔术棒-debug选项卡中勾上"Rest and Run"。
  • 在Application/User目录下,打开main.c文件。找到while(1)函数,写入下面两句代码。
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3*/            //在BEGIN与END之间添加代码。重新生成工程就不会删掉
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_6);   //翻转IO引脚
		HAL_Delay(2000);                        //延时2秒
  }
  /* USER CODE END 3 */
  • 编译后,下载烧录到板子中。

有人想我不想有规律的闪动,或者常亮呢,该用什么命令呢?就用到一下命令。

GPIO HAL库函数

void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);   //设置引脚函数

  •  GPIO_TypeDef *GPIOx:GPIOA,B,C...
  • uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN15
  • GPIO_PinState PinState:GPIO_PIN_RESET(低电平),GPIO_PIN_SET(高电平)
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		HAL_Delay(1000);
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_RESET);    //LED灯会亮两秒钟
		HAL_Delay(2000);
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_6,GPIO_PIN_SET);      //LED灯会灭一秒钟
  }
  /* USER CODE END 3 */
}

GPIO_PinState     HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);               //读取引脚电平

  •  GPIO_TypeDef *GPIOx:GPIOA,B,C...
  • uint16_t GPIO_Pin:GPIO_PIN_0~GPIO_PIN_15
  • GPIO_PinState返回值:GPIO_PIN_RESET=0代表低电平、GPIO_PIN_SET=1代表高电平

还有其他函数,大家在实际中运用吧。

                       void     HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);         //翻转IO引脚电平
HAL_StatusTypeDef    HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);            //锁定IO引脚电平

开发板链接:https://item.taobao.com/item.htm?ft=t&id=617799679179 

你可能感兴趣的:(stm32,STM32G0,STM32CubeMX,stm32,单片机,嵌入式)