中科蓝汛GPIO操作说明

概述

         本篇文章介绍如何使用中科蓝汛AB5681,GPIO管脚使用说明。

一、第一种写法

1)、GPIO配置输入模式   

//内部上拉
GPIOBDE  |= BIT(4); //数字IO使能: 0为模拟IO, 1 为数字IO
GPIOBDIR |= BIT(4); //控制IO的方向: 0为输出, 1为输入.
GPIOBFEN &= ~BIT(4);//0:当作通用GPIO使用 //1:当作其它功能性IO
GPIOBPU  |= BIT(4); //10K上拉使能

2)、GPIO配置输出模式

GPIOBDE  |= BIT(4); //数字IO使能: 0为模拟IO, 1 为数字IO
GPIOBDIR &= ~BIT(4); //控制IO的方向: 0为输出, 1为输入.
GPIOBFEN &= ~BIT(4);//0:当作通用GPIO使用 //1:当作其它功能性IO
GPIOBSET |= BIT(4); // 将PB4 引脚设置输出高
GPIOBCLR |= BIT(4); // 将PB4 引脚设置输出低
GPIOBDRV &= ~BIT(4); // 小电流 具体看手册
GPIOBDRV |= BIT(4);  // 大电流 具体看手册 

3)、gpio口定义:

4)、以AB5681为例:(数据手册 AB568X UserManual.pdf)

 二、第二种写法

void gpio_output_h(u8 io_num)
{
    gpio_t gpio;
    bsp_gpio_cfg_init(&gpio, io_num);
    if (gpio.sfr) {
        gpio.sfr[GPIOxFEN] &= ~BIT(gpio.num);
        gpio.sfr[GPIOxDE] |= BIT(gpio.num);
        gpio.sfr[GPIOxDIR] &= ~BIT(gpio.num);
        gpio.sfr[GPIOxSET] = BIT(gpio.num);
		//gpio.sfr[GPIOxDRV] &= ~BIT(gpio.num); //小电流
		gpio.sfr[GPIOxDRV] = BIT(gpio.num); //大电流
    }
}

void gpio_output_l(u8 io_num)
{
    gpio_t gpio;
    bsp_gpio_cfg_init(&gpio, io_num);
    if (gpio.sfr) {
        gpio.sfr[GPIOxFEN] &= ~BIT(gpio.num);
        gpio.sfr[GPIOxDE] |= BIT(gpio.num);
        gpio.sfr[GPIOxDIR] &= ~BIT(gpio.num);
        gpio.sfr[GPIOxCLR] = BIT(gpio.num);
		//gpio.sfr[GPIOxDRV] &= ~BIT(gpio.num); //小电流
		gpio.sfr[GPIOxDRV] = BIT(gpio.num); //大电流
    }
}

void gpio_input(u8 io_num)
{
    gpio_t gpio;
    bsp_gpio_cfg_init(&gpio, io_num);
    if (gpio.sfr) {
        gpio.sfr[GPIOxFEN] &= ~BIT(gpio.num);
        gpio.sfr[GPIOxDE] |= BIT(gpio.num);
        gpio.sfr[GPIOxDIR] &= ~BIT(gpio.num);
        //gpio.sfr[GPIOxPU] |= BIT(gpio.num);	//内部上拉
		gpio.sfr[GPIOxPD] |= BIT(gpio.num); //内部下拉
    }
}

三、调用

gpio_output_h(IO_PB4);    //输出高电平
gpio_output_l(IO_PB4);    //输出低电平
gpio_input(IO_PB4);       //输入

四、总结 

        好了,介绍完毕希望能帮助到需要的人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ch_champion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值