RT1064-gpio

gpio初始化

void gpio_init(PIN_enum pin, GPIODIR_enum dir, uint8 dat, uint32 pinconf)

第一个参数:引脚,用哪个就写哪个,用B9填B9,具体的在common.h文件中 typedef enum
在这里插入图片描述

第二个参数:引脚的方向 输出:GPO 输入:GPI
第三个参数:引脚初始化时设置的电平状态,输出时有效 0:低电平 1:高电平
第四个参数:引脚配置(可设置参数由zf_iomuxc.h文件内PINCONF_enum枚举值确定,多个条件使用 | 相或)。看zf_gpio.h前面宏定义部分,在这里插入图片描述
大概意思是你就点个灯啦,选第一个,用快速gpio了,用第二个,用中断了,选第三个。参数也可以自己改,目前我也不知道快速gpio是啥。

gpio设置

输出

void gpio_set(PIN_enum pin, uint8 dat)

第一个参数:引脚号
第二个参数:0 或 1

输入

uint8 gpio_get(PIN_enum pin) //你要读的引脚

返回的是unsigned char类型,即uint8

延时 ms级别

systick_delay_ms(100);

gpio方向设置

gpio_dir(PIN_enum pin, GPIODIR_enum dir)
//  @param      pin         选择的引脚 (可选择范围由 common.h 内PIN_enum枚举值确定)
//  @param      dir         引脚的方向   输出:GPO   输入:GPI

引脚电平反转

void gpio_toggle(PIN_enum pin)

gpio外部中断初始化

void gpio_interrupt_init(PIN_enum pin, TRIGGER_enum trigger, uint32 pinconf)

第一个参数:引脚
第二个参数:中断触发方式,可选enum中的

typedef enum    // 枚举触发方式
{
    NO_INT,     //关闭中断模式
    LOW,        //低电平触发
    HIGH,       //高
    RISING,     //上升沿
    FALLING,    //下降沿
    BOTH,       //仅PINT模块 可用此触发方式
}TRIGGER_enum;

第三个参数:引脚配置,可选,多个条件使用 | 相或

#define GPIO_PIN_CONFIG         SPEED_100MHZ | DSE_R0 | PULLUP_47K | PULL_EN	//宏定义GPIO引脚的默认配置,便于初始化GPIO时快速填写参数,如果需要其他参数可自行修改
#define FAST_GPIO_PIN_CONFIG    SPEED_200MHZ | DSE_R0 | PULLUP_47K | PULL_EN    //宏定义快速GPIO引脚的默认配置,便于初始化GPIO时快速填写参数,如果需要其他参数可自行修改
#define GPIO_INT_CONFIG         SPEED_100MHZ | HYS_EN | PULLUP_22K | PULL_EN    //宏定义GPIO中断引脚的默认配置,便于初始化GPIO中断时快速填写参数,如果需要其他参数可自行修改

这些可以自己改或者添加,具体的选项在zf_iomuxc.h的PINCONF_enum中。

typedef enum
{
    HYS_EN          = 1<<IOMUXC_SW_PAD_CTL_PAD_HYS_SHIFT,   //滞后使能
    
    PULLDOWN_100K   = 0<<IOMUXC_SW_PAD_CTL_PAD_PUS_SHIFT,   //端口为输入时有效
    PULLUP_47K      = 1<<IOMUXC_SW_PAD_CTL_PAD_PUS_SHIFT,   //端口为输入时有效
    PULLUP_100K     = 2<<IOMUXC_SW_PAD_CTL_PAD_PUS_SHIFT,   //端口为输入时有效
    PULLUP_22K      = 3<<IOMUXC_SW_PAD_CTL_PAD_PUS_SHIFT,   //端口为输入时有效
    
    PULL_EN         = 1<<IOMUXC_SW_PAD_CTL_PAD_PKE_SHIFT | 1<<IOMUXC_SW_PAD_CTL_PAD_PUE_SHIFT,
    KEEPER_EN       = 1<<IOMUXC_SW_PAD_CTL_PAD_PKE_SHIFT,   //保持器使能
    
    OD_EN           = 1<<IOMUXC_SW_PAD_CTL_PAD_ODE_SHIFT,   //开漏使能
    
    SPEED_50MHZ     = 0<<IOMUXC_SW_PAD_CTL_PAD_SPEED_SHIFT,
    SPEED_100MHZ    = 1<<IOMUXC_SW_PAD_CTL_PAD_SPEED_SHIFT,
    SPEED_200MHZ    = 3<<IOMUXC_SW_PAD_CTL_PAD_SPEED_SHIFT,
    
    DSE_DIS         = 0<<IOMUXC_SW_PAD_CTL_PAD_DSE_SHIFT,   //禁用输出强度设置
    DSE_R0          = 1<<IOMUXC_SW_PAD_CTL_PAD_DSE_SHIFT,   //3.3V时150ohm  1.8V时260ohm
    DSE_R0_2        = 2<<IOMUXC_SW_PAD_CTL_PAD_DSE_SHIFT,   //R/2
    DSE_R0_3        = 3<<IOMUXC_SW_PAD_CTL_PAD_DSE_SHIFT,   //R/3
    DSE_R0_4        = 4<<IOMUXC_SW_PAD_CTL_PAD_DSE_SHIFT,   //R/4
    DSE_R0_5        = 5<<IOMUXC_SW_PAD_CTL_PAD_DSE_SHIFT,   //R/5
    DSE_R0_6        = 6<<IOMUXC_SW_PAD_CTL_PAD_DSE_SHIFT,   //R/6
    DSE_R0_7        = 7<<IOMUXC_SW_PAD_CTL_PAD_DSE_SHIFT,   //R/7
        
    SRE_SLOW        = 0<<IOMUXC_SW_PAD_CTL_PAD_SRE_SHIFT,
    SRE_FAST        = 1<<IOMUXC_SW_PAD_CTL_PAD_SRE_SHIFT,
    
}PINCONF_enum;

具体的意思现在还不懂=_=

快速gpio初始化

void fast_gpio_init(PIN_enum pin, GPIODIR_enum dir, uint8 dat, uint32 pinconf)

配置和普通的一样,引脚范围可选择范围由 common.h 内PIN_enum枚举值确定,但是快速GPIO 最高可达150M的翻转输出,需要达到最高速度不能使用库函数来输出电平,需要直接操作寄存器来控制引脚,具体可以查看h文件中有宏定义
同样,快速gpio也有相关类似函数

void fast_gpio_set(PIN_enum pin, uint8 dat)
uint8 fast_gpio_get(PIN_enum pin)
void fast_gpio_dir(PIN_enum pin, GPIODIR_enum dir)
void fast_gpio_toggle(PIN_enum pin)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值