当前位置: 首页 > article >正文

【西门子杯工业嵌入式-2-点亮一颗LED】

西门子杯工业嵌入式-2-点亮一颗LED

  • 一、课程回顾与目标
    • 1.上节课内容回顾
    • 2.本节课目标
  • 二、硬件连接与原理
    • 1. 硬件连接方式
    • 2. 连接实例
  • 三、GPIO原理知识
    • 1. GPIO结构
    • 2. 推挽输出模式原理
  • 四、软件实现步骤
    • 1. 项目结构设置
    • 2. 函数定义
    • 3. led.c 文件编写
      • 初始化函数 led_init
      • 交替闪烁函数 led_flash
  • 五、主函数调用逻辑
  • 六、下载与调试设置
  • 七、总结与思考

链接: B站视频

一、课程回顾与目标

1.上节课内容回顾

了解了GD32系列芯片的基本信息

熟悉了项目的开发目录结构

2.本节课目标

学会通过GPIO控制LED点亮

实践使用标准外设库进行GPIO配置

实现两个LED的交替闪烁

二、硬件连接与原理

1. 硬件连接方式

开发板未固定连接LED,需通过杜邦线自定义连接端口。

每个LED通过限流电阻连接至公共端(GND),即低电平熄灭,高电平点亮。
在这里插入图片描述
在这里插入图片描述

2. 连接实例

示例中选择了 PE2 和 PE3 两个GPIO口连接LED。
在这里插入图片描述

三、GPIO原理知识

1. GPIO结构

GD32F470VET6 提供最多82个GPIO引脚(GPIOA~GPIOE,每组16个引脚)
在这里插入图片描述

可配置为:

输入/输出

上拉/下拉/浮空

推挽输出 / 开漏输出

高/中/低速

2. 推挽输出模式原理

利用上下两个MOS管交替导通

高电平输出 ≈ 3.3V,低电平输出 ≈ 0V

驱动能力强,适合LED等负载
在这里插入图片描述

四、软件实现步骤

1. 项目结构设置

在 hardware/LED/ 文件夹下:

新建 led.c 与 led.h

在工程设置中添加 led.c 源文件

配置路径引用 led.h

2. 函数定义

在 led.h 中定义两个函数:

void led_init(void);       // 初始化LED GPIO
void led_flash(void);      // LED交替闪烁

3. led.c 文件编写

初始化函数 led_init

rcu_periph_clock_enable(RCU_GPIOE);//开启GPIO端口时钟:
gpio_mode_set(GPIOE, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_3);//配置GPIO模式
gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_3);//设置推挽输出、50MHz
gpio_bit_reset(GPIOE, GPIO_PIN_3);//默认输出低电平关闭LED

在这里插入图片描述

交替闪烁函数 led_flash

使用模板提供的 delay_1ms 函数进行延时

控制两颗LED交替点亮、熄灭,循环实现流水效果。

五、主函数调用逻辑

在 function.c 中的 user_function 函数中调用:

led_init();      // 初始化LED
led_flash();     // 实现交替闪烁

六、下载与调试设置

下载设置步骤:
1.打开“魔术棒”配置界面

2.进入“Debug”页签,选择 ST-Link

3.点击“Settings”确认芯片识别成功

4.勾选 “Reset and Run”,下载完成后自动运行程序

5.编译并下载程序

七、总结与思考

本节课收获:
学习了GPIO控制LED的基本原理

掌握了GD32固件库的使用方法

实现了两个LED灯交替闪烁的效果

留给大家的思考题:
如何实现多颗LED的流水灯?可以使用几种方式来实现?

http://www.lryc.cn/news/2401607.html

相关文章:

  • 代码随想录算法训练营第60期第五十五天打卡
  • 重磅更新! 基于Gemini 2.5 Pro打造的AI智能体PlantUML-X上线!
  • [5-02-04].第01节:Jmeter环境搭建:
  • AI智能推荐实战之RunnableParallel并行链
  • windows server2019 不成功的部署docker经历
  • Gemini开源项目DeepResearch:基于LangGraph的智能研究代理技术原理与实现
  • React状态管理Context API + useReducer
  • 【无标题】路径着色问题的革命性重构:拓扑色动力学模型下的超越与升华
  • Doris Catalog 联邦分析查询性能优化:从排查到优化的完整指南
  • 01 Deep learning神经网络的编程基础 二分类--吴恩达
  • 视频自动化分割方案:支持按时间与段数拆分
  • Open SSL 3.0相关知识以及源码流程分析
  • 股指期货合约价值怎么算?
  • 【QT】使用QT帮助手册找控件样式
  • 计算机网络(5)——数据链路层
  • VuePress完美整合Toast消息提示
  • JVM 调优参数详解与实践
  • adb 连不上真机设备问题汇总
  • [yolov11改进系列]基于yolov11引入注意力机制SENetV1或者SENetV2的python源码+训练源码
  • 鸿蒙仓颉语言开发实战教程:商城搜索页
  • 上门服务小程序会员系统框架设计
  • 图像去雾数据集总汇
  • 小程序引入deepseek
  • 网络攻防技术十四:入侵检测与网络欺骗
  • C++笔记-C++11(一)
  • JVM 类初始化和类加载 详解
  • B站缓存视频数据m4s转mp4
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_天气预报日历示例(CalendarView01_18)
  • 【机器学习】主成分分析 (PCA)
  • 二叉树-104.二叉树的最大深度-力扣(LeetCode)