DIO

本文详细介绍了DIO接口的两种访问方式:ISA访问方式和IO访问方式,并重点讲解了IO访问方式下的寄存器配置方法及GPIO8的具体应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇博文是接着前面的LPC,SIO继续说的,DIO,直接IO口,其作用就是通过和继电器的配合使用以实现控制。

DIO有两种访问方式,一种是ISA的访问方式,一种为IO的访问方式。
ISA的访问方式在前面SIO中已经说明了,接下来需要介绍的是IO的访问方式
先介绍几个相关的寄存器:




我之前所做的dio访问的主板,是利用gpio 8来配置DIO的,不同的主板会有所不同,应该根据电路图以分别。



从寄存器当中可以读出,GPIO8的DIO访问方式地址为基地址加上偏移量0x02。

他的基地址可以通过ru读出来,如图,其基地址为0x02A0。


当然也可以通过对sio进行访问该寄存器,一样可以读出来。


下面说一下关于DIO的三个重要寄存器:








写0x02A2相当于ISA访问方式的0x89写操作
读0x02A2相当于ISA访问方式的0x8A读操作
0x02A2是基地址0x2A0加上GPIO8的偏移量2。
DIO访问方式的部分code如下


在不同类型的主板上,用作DIO的GPIO可能不同,有些GPIO需要对全局寄存器行设置

0x27 bit 5



0x27寄存器为全局寄存器,对其进行配置可以实现device的不同功能,如,需要将gpio8
x作为gpio实现,其寄存器配置应为:


我的程序里面没有配,因为在bios里面已经配置过了,但个人强烈建议,在使用时加上,这样可以避免错误。



Thanks for your reading.

### 使用 Dio 库进行 HTTP 请求 Dio 是一个强大的 Dart 包,用于处理网络请求。它支持拦截器、全局配置、表单数据、文件上传/下载等功能[^1]。 #### 安装 Dio 要在项目中使用 Dio,需将其添加到 `pubspec.yaml` 文件中的依赖项部分: ```yaml dependencies: dio: ^5.0.0 ``` 运行命令以安装包: ```bash flutter pub get ``` #### 基本用法 以下是使用 Dio 进行基本 GET 和 POST 请求的示例代码。 ##### 发起 GET 请求 下面是一个发起简单 GET 请求并打印响应的示例: ```dart import 'package:dio/dio.dart'; void main() async { var dio = Dio(); // 创建实例 try { Response response = await dio.get('https://jsonplaceholder.typicode.com/posts'); print(response.data); // 打印返回的数据 } catch (e) { print(e); } } ``` ##### 发起 POST 请求 以下是如何发送带有 JSON 数据的 POST 请求的例子: ```dart import 'package:dio/dio.dart'; void postDataExample() async { var dio = Dio(); try { Map<String, dynamic> data = {'title': 'foo', 'body': 'bar', 'userId': 1}; Response response = await dio.post( 'https://jsonplaceholder.typicode.com/posts', data: data, ); print(response.data); } catch (e) { print(e); } } ``` #### 配置选项 可以设置一些默认参数来简化多次调用时的重复工作。例如,定义基础 URL 或超时时间等。 ```dart var dio = Dio(BaseOptions( baseUrl: "https://jsonplaceholder.typicode.com", connectTimeout: Duration(seconds: 5), receiveTimeout: Duration(seconds: 3), )); ``` #### 处理错误 通过捕获异常可优雅地管理失败情况下的逻辑流程。 ```dart try { final response = await dio.get('/nonexistent-endpoint'); } on DioException catch (e) { if (e.response != null) { print(e.response!.data); } else { print(e.message); } } ``` 以上展示了如何利用 Dio 实现常见的 HTTP 功能以及其灵活性和易用性特点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值