西门子杯工业嵌入式-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的流水灯?可以使用几种方式来实现?