RT1064学习GPIO——基于逐飞科技开源库
前言
- 逐飞科技主控板上仅有蜂鸣器接口并无LED接口引出,但RT1064核心板上有LED接口
- LED使用引脚为PB9,低电平点亮
- 蜂鸣器使用引脚为PB11,NPN高电平驱动
API接口
- 逐飞科技对于GPIO的函数封装分为慢速(100MHZ)和快速(200MHZ),个人理解为电路的响应速度,在非高速通信情况下使用低速配置即可,有助于减少干扰同时降低功耗。
1、基本配置(低速)
低速接口引脚模式有如下:
GPI_ANAOG_IN = SPEED_100MHZ | DSE_R0_6, // 模拟输入
GPI_FLOATING_IN = SPEED_100MHZ | DSE_R0, // 浮空输入
GPI_PULL_DOWN = SPEED_100MHZ | DSE_R0 | PULLDOWN_100K | PULL_EN, // 下拉输入
GPI_PULL_UP = SPEED_100MHZ | DSE_R0 | PULLUP_47K | PULL_EN, // 上拉输入
GPO_PUSH_PULL = SPEED_100MHZ | DSE_R0, // 推挽输出
GPO_OPEN_DTAIN = SPEED_100MHZ | DSE_R0 | OD_EN, // 开漏输出
GPO_AF_PUSH_PULL = SPEED_100MHZ | DSE_R0, // 复用推挽输出
GPO_AF_OPEN_DTAIN = SPEED_100MHZ | DSE_R0 | OD_EN, // 复用开漏输出
void gpio_set_level (gpio_pin_enum pin, uint8 dat);
功能:设置引脚电平
参数1:引脚号
参数2:电平(0/1)
uint8 gpio_get_level (gpio_pin_enum pin);
功能:读取引脚电平
参数1:引脚号
void gpio_toggle_level (gpio_pin_enum pin);
功能:反转引脚电平
参数1:引脚号
void gpio_set_dir (gpio_pin_enum pin, gpio_dir_enum dir, gpio_mode_enum pinconf);
功能:设置引脚方向
参数1:引脚号
参数2:方向(输入(GPI)/输出(GPO))
参数3:引脚模式
void gpio_init (gpio_pin_enum pin, gpio_dir_enum dir, uint8 dat, uint32 pinconf);
功能:引脚初始化
参数1:引脚号
参数2:方向(输入(GPI)/输出(GPO))
参数3:默认电平(0/1)
参数4:引脚模式
2、快速配置(高速)
高速接口引脚模式有如下:
FAST_GPI_PULL_DOWN = SPEED_200MHZ | DSE_R0 | PULLDOWN_100K | PULL_EN, // 下拉输入
FAST_GPI_PULL_UP = SPEED_200MHZ | DSE_R0 | PULLUP_47K | PULL_EN, // 上拉输入
FAST_GPO_PUSH_PULL = SPEED_200MHZ | DSE_R0,
void fast_gpio_set_level (gpio_pin_enum pin, uint8 dat);
功能:设置引脚电平
参数1:引脚号
参数2:电平(0/1)
uint8 fast_gpio_get_level (gpio_pin_enum pin);
功能:读取引脚电平
参数1:引脚号
void fast_gpio_toggle_level (gpio_pin_enum pin);
功能:反转引脚电平
参数1:引脚号
void fast_gpio_set_dir (gpio_pin_enum pin, gpio_dir_enum dir, gpio_mode_enum pinconf);
功能:设置引脚方向
参数1:引脚号
参数2:方向(输入(GPI)/输出(GPO))
参数3:引脚模式
void fast_gpio_init (gpio_pin_enum pin, gpio_dir_enum dir, uint8 dat, uint32 pinconf);
功能:引脚初始化
参数1:引脚号
参数2:方向(输入(GPI)/输出(GPO))
参数3:默认电平(0/1)
参数4:引脚模式
测试示例
初始化LED及蜂鸣器,使其间隔1S亮灭(响停)
#include "zf_common_headfile.h"
#define BUZZER B11
#define LED B9
int main(void)
{
clock_init(SYSTEM_CLOCK_600M); // 不可删除
debug_init(); // 调试端口初始化
system_delay_ms(300);
// 此处编写用户代码 例如外设初始化代码等
gpio_init(B9,GPO,1,GPO_PUSH_PULL); //设置PB9为100HZ推挽输出,默认电平为0
gpio_init(B11,GPO,0,GPO_PUSH_PULL); //设置PB11为100HZ推挽输出,默认电平为0
while(1)
{
// 此处编写需要循环执行的代码
gpio_toggle_level(B9); //反转LED状态
gpio_toggle_level(B11); //反装蜂鸣器状态
system_delay_ms(1000); //延时一秒
}
}