这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 开源硬件 » stm32f103GPIO实现LED

共2条 1/1 1 跳转至

stm32f103GPIO实现LED

高工
2026-02-19 20:57:14     打赏


STM32F103上通过GPIO控制LED,使用的是板载LED,引脚是PA5、时钟使能、GPIO配置及控制逻辑四步。

 

一、硬件连接

原理图

LED电路:LED正极接3.3V,负极通过220Ω限流电阻接GPIO引脚PA5;或LED正极接GPIO,负极接GND需配置GPIO为推挽输出。

引脚选择:STM32F103C8T6常用PA5板载LED

 277453b6-94b0-4f3e-b9b5-2461e77e5963.png


二、软件配置

1.       使能GPIO时钟

main.c中初始化时钟:

__HAL_RCC_GPIOA_CLK_ENABLE(); // 使能GPIOA时钟使用PA5

配置GPIO模式

使用HAL_GPIO_Init配置引脚:

GPIO_InitTypeDef GPIO_InitStruct = {0};

GPIO_InitStruct.Pin = GPIO_PIN_5;       // 引脚号

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

GPIO_InitStruct.Pull = GPIO_NOPULL;     // 无上拉/下拉

GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 低速

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

控制LED亮灭

使用HAL库的读写函数:

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);   // 点亮LED

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET); // 熄灭LED

 

完整代码

#include "main.h"

 

int main(void) {

  HAL_Init();

  __HAL_RCC_GPIOA_CLK_ENABLE();

 

  GPIO_InitTypeDef GPIO_InitStruct = {

    .Pin = GPIO_PIN_5,

    .Mode = GPIO_MODE_OUTPUT_PP,

    .Pull = GPIO_NOPULL,

    .Speed = GPIO_SPEED_FREQ_LOW

  };

  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

 

  while (1) {

    HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // 翻转引脚状态

    HAL_Delay(500); // 500ms延时(需配置SysTick

  }

}

 

三、软件框图

GPIO框架

497cfeee-859f-4f8c-8ccf-e7f9e7be2ef1.png

基本结构

46c8abf6-d83b-48d1-b2c3-ceecac5fe2a6.png

上下拉

 bfef3dea-37a4-4e03-bc68-e317f54b44b7.png

四、实现效果

202602192051 00_00_00-00_00_30.gif


院士
2026-02-21 09:49:21     打赏
2楼

梅哥,您这工作台是不是有点简陋了啊?

话说,咱们能不能换成M4的内核的MCU玩玩


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]