控制GPIO输出——程序设计步骤【HAL】

GPIO即通用输入输出接口(General-purpose Input/Output)。作为输入时,读取引脚的高低电平;作为输出时,通过输出的高低电平控制外围设备。这里简单介绍GPIO的作为输出的程序设计步骤。

整体思路

  1. 开启GPIO时钟
  2. 选择GPIO引脚
  3. 设置GPIO为输出模式
  4. 选择GPIO的输出方式:推挽输出、开漏输出
  5. 设置GPIO的输出速度
  6. 控制GPIO引脚高低电平

开启GPIO时钟

STM32中每个外设的时钟默认都是关闭的,要使用这个外设,要先打开它的时钟。
HAL库中使用宏函数来开启对应组GPIO的时钟。

__HAL_RCC_GPIOx_CLK_ENABLE();

配置GPIO参数

使用库函数编程,配置GPIO参数需要先声明GPIO_InitTypeDef结构体,然后向结构体中写入GPIO口的选择和配置信息,最后通过HAL_GPIO_Init()函数将配置完的结构体信息写入对应GPIO外设寄存器中。

/*选择GPIO引脚*/
  GPIO_InitStruct.Pin = GPIO_PIN_0;
/*设置GPIO模式:推挽输出*/
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
/*选择上下拉,输出模式一般不使用*/
  GPIO_InitStruct.Pull = GPIO_NOPULL;
/*设置GPIO口输出速度,输入模式一般不使用*/
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
/*将配置好的GPIO配置信息写入对应的GPIO寄存器 */
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

控制GPIO引脚

HAL_GPIO_WritePin();函数可以控制GPIO引脚输出高低电平,定义在stm32g0xx_hal_gpio.h头文件中。

void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, 
							uint16_t GPIO_Pin, GPIO_PinState PinState);
/*
GPIOx:用来选择GPIO外设,x可以是(A-F)
GPIO_Pin:选择GPIO引脚(GPIO_PIN_0 ~ GPIO_PIN_15)
PinState:设置GPIO引脚高低电平
						GPIO_PIN_RESET:复位,输出低电平
						GPIO_PIN_SET     :置位,输出高电平
*/

实现简单的LED灯闪烁

LED灯阳极接3.3V电源,阴极接GPIOB的Pin0脚

int main()
{
	__HAL_RCC_GPIOB_CLK_ENABLE();

	GPIO_InitStruct.Pin = GPIO_PIN_0;
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
	GPIO_InitStruct.Pull = GPIO_NOPULL;
	GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
	HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

	while (1)
	{
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
		HAL_Delay(1000); //延时函数,ms级,延时1s
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
		HAL_Delay(1000); //延时函数,ms级,延时1s
	}
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值