基于GD32的简易数字示波器(5)- 软件_控制LED

  这期记录的是项目实战,做一个简易的数字示波器。

教程来源于嘉立创,帖子主要做学习记录,方便以后查看。

本期主要介绍GPIO口的输入输出模式,使用其中的输出模式驱动LED。详细教程可观看下方链接。

2.2 LED控制实验 · 语雀

 1、LED灯驱动原理

通过控制单片机引脚输出高低电平,从而改变LED灯两侧电势差形成电流回路,点亮LED灯。

2、原理图

这里就是通过控制PC14、PC15输出低电平来点亮LED2、LED3

在LED灯的正极是连接3.3V,中间接入了一个1K的限流电阻防止LED灯烧坏;

当我们将对应引脚配置为高电平时,单片机引脚高电平输出(3.3V),此时没有电压差,没有电流流过,不能点亮LED;

当我们将对应引脚配置为低电平时,单片机引脚低电平输出(0V),此时有电压差,有电流流过,LED灯被点亮

 3、配置流程

使用GPIO端口流程:

开启GPIO的端口时钟
配置GPIO的模式
配置GPIO的输出

3.1 开启GPIO的端口时钟

GD32的所有外设资源时钟默认都是关闭的,在配置外设之前需要先开启对应的时钟。
时钟库函数在gd32e23x_rcu.h头文件中,也可通过附件资料中的《GD32固件库使用指南》查看该函数的详细说明。

rcu_periph_clock_enable(RCU_GPIOC);

 3.2 配置GPIO模式

在配置模式前,首先需要了解GPIO的模式,GD32E230的GPIO模式有以下几种:

GPIO_MODE_INPUT-------输入模式

GPIO_MODE_OUTPUT-----输出模式

GPIO_MODE_AF-----------复用模式(引脚复用功能时使用)

GPIO_MODE_ANALOG----模拟模式(ADC读取模拟量时使用,可以读取细微变化的值)

当GPIO用作输入时,还会有以下几种情况可以设置:

GPIO_PUPD_NONE--------引脚浮空

GPIO_PUPD_PULLUP------引脚上拉

GPIO_PUPD_PULLDOWN-引脚下拉

相关GPIO操作库函数在gd32e23x_gpio.h中,也可通过附件资料中的《GD32固件库使用指南》查看该函数的详细说明。

此函数有四个参数:

第一个参数是引脚端口,第二参数设置引脚模式;

第三个参数是设置上下拉情况,第四个参数是具体端口引脚号;

此处我们使用引脚的输出功能,无需上下拉设置,直接设置为浮空即可;

//设置输出模式,不上下拉
gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_14);
//设置输出模式,不上下拉
gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_15);

3.3 配置GPIO的输出

在配置输出之前,也同样需要了解GPIO的输出类型,GD32E230GPIO输出类型有以下几种:

GPIO_OTYPE_PP----推挽输出(由两个MOS或者三极管进行互补控制的信号控制,可输出高低电平)

GPIO_OTYPE_OD---开漏输出(由单个MOS或者三极管进行信号控制,无法输出高电平,需要借助外部上拉电阻,常用作“线与”);

引脚配置为输出,GPIO可以进行速度的配置(IO电平翻转速度),输入因为是检测电平,所以IO翻转速度对其影响不大。

GPIO_OSPEED_2MHZ----速度最大2Mhz

GPIO_OSPEED_10MHZ---速度最大10Mhz

GPIO_OSPEED_50MHZ---速度最大50Mhz

相关GPIO操作库函数在gd32e23x_gpio.h中,也可通过附件资料中的《GD32固件库使用指南》查看该函数的详细说明。

    //设置输出类型,推挽输出,50Mhz
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_14);
    //设置输出类型,推挽输出,50Mhz
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_15);

 3.4 GPIO输出高低电平

引脚配置完成后,现在可通过配置输出高低电平来实现LED的点亮和熄灭。

相关GPIO操作库函数在gd32e23x_gpio.h中,也可通过附件资料中的《GD32固件库使用指南查看》该函数的详细说明。

输出低电平
gpio_bit_reset(GPIOC,GPIO_PIN_14);
gpio_bit_reset(GPIOC,GPIO_PIN_15);
输出高电平
gpio_bit_set(GPIOC,GPIO_PIN_14);
gpio_bit_set(GPIOC,GPIO_PIN_15);

3.5 完整代码

#include "gd32e23x.h"
#include "systick.h"
#include <stdio.h>
#include "led.h"
#include "main.h"


int main(void)
{
    //初始化滴答定时器
	systick_config();
    //使能时钟
    rcu_periph_clock_enable(RCU_GPIOC);
    //设置输出模式,不上下拉
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_14);
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_15);
    //设置输出类型,推挽输出,50Mhz
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_14);
	gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_15);
    //设置引脚输出低电平
    gpio_bit_reset(GPIOC,GPIO_PIN_14);
    gpio_bit_reset(GPIOC,GPIO_PIN_15);
	while(1)
	{
	}
}

 

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: gd-link_programmer 是一个可能指代正在进行或曾经进行过 GDLink 项目开发的程序员。GDLink 是一种针对 ARM Cortex-M 微控制器的调试及下载协议,相比 JTAG 和 SWD 等传统调试方法具有更高的速度和更小的引脚需求。因此,有许多开发人员在进行嵌入式开发时会使用 GDLink 进行调试及下载。对于 gd-link_programmer 而言,他可能有一定的嵌入式开发背景,并熟悉 GDLink 协议的实现和使用,同时也能通过编写软件等方式来支持 GDLink 的使用。gd-link_programmer 可能会参与到GDLink项目的开发、维护及相关软件生态的构建中。GDLink 项目的开源社区也会为 gd-link_programmer 提供广泛的交流平台和资源支持,进一步促进 GDLink 生态的发展壮大。 ### 回答2: gd-link_programmer是一个工具软件,主要用于制作和烧写STM32芯片的Bootloader程序。STM32是意法半导体(STMicroelectronics)公司生产的一系列微控制器,常用于嵌入式系统应用中。Bootloader是在芯片上的一个程序,用于引导系统正常启动,并可以更新系统程序固件。gd-link_programmer可以通过编写代码来生成Bootloader程序,并通过连接STM32芯片的引脚和电路来烧录Bootloader程序。在调试和维护嵌入式系统时,gd-link_programmer是一个非常重要的工具,它可以帮助程序员快速更新系统固件,提高开发和维护效率。不过,gd-link_programmer需要一定的编程经验和电路连接知识,对初学者来说可能会有一些困难。因此,对于初学者而言,建议先学习相关的编程知识和电路知识,再使用gd-link_programmer进行Bootloader程序的制作和烧录。 ### 回答3: gd-link_programmer是指一种通用串口下载器,可用于嵌入式设备的程序烧写。它可以通过串口连接到目标设备,支持多种芯片的下载和调试。此外,gd-link_programmer还具有快速下载、在线调试、实时监控等特点,方便用户进行程序开发和调试。gd-link_programmer支持多种操作系统,包括Linux、Windows和Mac OS。用户可以根据需要选择不同的驱动程序和软件工具进行使用。gd-link_programmer的特点是性价比高、易于使用和灵活性强。它通常应用于嵌入式系统、单片机、传感器网络等领域,为开发人员提供了可靠的帮助。在推动科技创新和智能制造方面,gd-link_programmer也发挥了重要作用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值