STM32输出控制PB0点亮LED灯

GPIO简介

GPIO是 General-purpose input/output 的简写,即通用输入/输出端口。

输入包括:输入浮空,输入上拉,输入下拉,模拟功能。

输出包括:开漏输出,推挽输出,复用推挽,复用开漏等。

每个GPIO所包括的寄存器:

  • 4个32位配置寄存器:GPIOx_MODER、 GPIOx_OTYPER、GPIOx_OSPEEDR 和 GPIOx_PUPDR
  • 2个32位数据寄存器:GPIOx_IDR 和GPIOx_ODR
  • 1个32位置位/复位寄存器:GPIOx_BSRR
  • 1个32位锁定寄存器:GPIOx_LCKR
  • 2个32位复用功能选择寄存器:GPIOx_AFRH 和 GPIOx_AFRL

接下来我们将使用软件:STM32CubeMX(配置参数)配合keil5(编译+烧录)通过GPIO的方式来点亮LED灯。

首先使用STM32CubeMX新建工程,并选择单片机型号,我们这里使用的是STM32G030C6

 以下四步设置PB0针脚为GPIO输出模式

 由于LED是低电平点亮,通常设置初始值让LED保持灭的状态,也就是将PB0的初始输出电平设置为高电平输出,这样上电时LED是灭的状态。以下步骤设置PB0的高低电平、输出模式、输入模式、输出速度等参数:

 

以下设置项目名称、存储位置、要使用的编译器等:我们此处选择MDK-ARM编译器、名称和位置随意(使用英文名称)

 点击以下位置生成代码

 使用HAL库函数操作:

HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

功能:写输出数据(高低电平 )

参数:GPIOx 填使用的GPIO组(GPIOB) GPIO_Pin 使用了哪个引脚(GPIO_PIN_0)

PinState 输出数据(高低1 或者0 GPIO_PIN_RESET 0 GPIO_PIN_SET 1

HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)

功能:IO口输出状态翻转

参数:GPIOx 填使用的GPIO组(GPIOB) GPIO_Pin 使用了哪个引脚(GPIO_PIN_0)

HAL_Delay()//延时函数参数填延时时间,毫秒级延时

 如果在stm32cubeMX中已经设置了初始化参数则不用再填写MX_GPIO_Init

void MX_GPIO_Init(void)

{

GPIO_InitTypeDef GPIO_InitStruct = {0};

//结构体声明

/* GPIO Ports Clock Enable */

__HAL_RCC_GPIOB_CLK_ENABLE();

//使能GPIOB时钟

/*Configure GPIO pin Output Level */

HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);

//输出高电平

/*Configure GPIO pin : PtPin */

GPIO_InitStruct.Pin = LED_Pin;//配置使用的GPIO引脚

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;//推挽输出

GPIO_InitStruct.Pull = GPIO_NOPULL;//上下拉不配置

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;//输出速度

HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);

//初始化参数写入

}

直接在以下位置编写程序:注意要在 /* USER CODE BEGIN 3 */注释下写入,不然重新使用cubeMX生成代码时会被覆盖

 

 

 我们一般电灯使用两种方法:函数直接控制高低电平或者是函数翻转法

//方法一:
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,0);//第三个参数设置为0低电平即点亮
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,1);//第三个参数设置为1高电平即熄灭
//方法二:
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);//PB0默认为1高电平时熄灭、翻转一次即为0低电平点亮

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值