GD32A503-EVAL GPIO配置

1 篇文章 0 订阅

GD32A503和GD32A513仅相差一个boot引脚,如果没有相应的需求可忽略两款芯片的区别。

简介

此MCU最多支持 88 个通用 I/O 引脚(GPIO),每个 GPIO 引脚可以由软件配置为输出(推挽或开漏)、输入、外设备用功能或者模拟模式。
此篇主要讲解GPIO端口配置。所有的端口都有外部中断的能力,如果想使用端口的外部中断功能,需要配置为输入模式。

GPIO 输出配置

输出配置的基本结构

  • 可选择的弱上拉和下拉电阻;
  • 开漏模式:输出控制寄存器设置为“0”时,相应引脚输出低电平;输出控制寄存器设置
    为“1”,相应管脚处于高阻状态;
  • 推挽模式:输出控制寄存器设置为“0”时,相应引脚输出低电平;输出控制寄存器设置
    为“1”,相应引脚输出高电平;
    GD32A503V-EVAL开发板 LED模块原理图
//GPIO输出初始化配置
void gpio_output_init(void)
{
    /* 使能 GPIOC 时钟 */
    rcu_periph_clock_enable(RCU_GPIOC);
    /* 配置 GPIO PC0 PC1 为输出模式不进行上下拉,在demo板上PC0和PC1为LED*/
    gpio_mode_set(GPIOC, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_0 | GPIO_PIN_1);
    gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1);
    /* 初始化 GPIO PC0 PC1 状态  根据项目需求设定*/
    gpio_bit_reset(GPIOC, GPIO_PIN_0 | GPIO_PIN_1);
}
//让PC0 和 PC1 输出高电平  -- 点亮LED
void set_gpio(void)
{
	gpio_bit_set(GPIOC, GPIO_PIN_0 | GPIO_PIN_1);
}
//让PC0 和 PC1 输出低电平   -- 熄灭LED
void reset_gpio(void)
{
	gpio_bit_reset(GPIOC, GPIO_PIN_0 | GPIO_PIN_1);
}

输出模式可以控制引脚状态;可以通过高低电平的反转输出相应的时序;可以配合示波器等设备,测量程序运行时间等。

输入配置

输入配置的基本结构

  • 可选择的弱上拉和下拉电阻;
  • 当前I/O引脚上的数据在每个AHB时钟周期都会被采样并存入端口输入状态寄存器;
  • 输出缓冲器禁用。
    GD32A503V-EVAL开发板 KEY模块原理图
//gpio输入初始化配置
void gpio_input_init(void)
{
    /* 使能 GPIOA 时钟 */
    rcu_periph_clock_enable(RCU_GPIOA);
    /* 配置PA0为输出模式 */
    gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0);
}
//获取gpio输入状态
uint8_t get_gpio(void)  --KEY2按键按下PA0处于上拉状态 为高电平
{
	return gpio_input_bit_get(GPIOA, GPIO_PIN_0);
}

可以根据实际需求对输入进行中断或者轮询读取是否要进行消抖处理等操作。约定好的bool类型数据;按键信号;捕获时序等信号处理。

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值