1.用户使用手册更新。
This commit is contained in:
@@ -8,24 +8,23 @@ ADC(模数转换器)是一种可以将连续的模拟信号转换为离散
|
||||
|
||||
----------
|
||||
|
||||
## 准备工作
|
||||
## 准备
|
||||
|
||||
1. 引用 `mrdrv.h` 头文件以使用驱动部分。
|
||||
2. 调用ADC设备初始化函数(如果实现了自动初始化,则无需调用)。
|
||||
3. 使能 `mrconfig.h` 头文件中ADC宏开关。
|
||||
1. 调用ADC设备初始化函数(如果实现了自动初始化,则无需调用)。
|
||||
2. 使能 `mrconfig.h` 头文件中ADC宏开关。
|
||||
|
||||
----------
|
||||
|
||||
## 调用关系
|
||||
|
||||

|
||||

|
||||
|
||||
----------
|
||||
|
||||
## 查找ADC设备
|
||||
|
||||
```c
|
||||
mr_device_t mr_device_find(const char *name);
|
||||
mr_device_t mr_device_find(const char *name);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
@@ -40,21 +39,21 @@ mr_device_t mr_device_find(const char *name);
|
||||
## 打开ADC设备
|
||||
|
||||
```c
|
||||
mr_err_t mr_device_open(mr_device_t device, mr_uint16_t flags);
|
||||
mr_err_t mr_device_open(mr_device_t device, mr_uint8_t oflags);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | ADC设备句柄 |
|
||||
| flags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | ADC设备 |
|
||||
| oflags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
|
||||
ADC设备支持以下打开方式:
|
||||
|
||||
```c
|
||||
MR_OPEN_RDONLY /* 只读 */
|
||||
MR_DEVICE_OFLAG_RDONLY /* 只读 */
|
||||
```
|
||||
|
||||
----------
|
||||
@@ -65,20 +64,20 @@ MR_OPEN_RDONLY /* 只读 */
|
||||
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | ADC设备句柄 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | ADC设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 控制设备成功 |
|
||||
| 错误码 | 控制设备失败 |
|
||||
|
||||
ADC设备支持以下命令:
|
||||
|
||||
```c
|
||||
MR_CTRL_SET_CONFIG /* 设置参数 */
|
||||
MR_CTRL_GET_CONFIG /* 获取参数 */
|
||||
MR_DEVICE_CTRL_SET_CONFIG /* 设置参数 */
|
||||
MR_DEVICE_CTRL_GET_CONFIG /* 获取参数 */
|
||||
```
|
||||
|
||||
### 设置ADC设备通道
|
||||
@@ -106,15 +105,15 @@ MR_ENABLE 1 /* 使能通
|
||||
mr_device_t adc_device = mr_device_find("adc1");
|
||||
|
||||
/* 以只读方式打开 */
|
||||
mr_device_open(adc_device, MR_OPEN_RDONLY);
|
||||
mr_device_open(adc_device, MR_DEVICE_OFLAG_RDONLY);
|
||||
|
||||
/* 获取参数 */
|
||||
struct mr_adc_config adc_config;
|
||||
mr_device_ioctl(adc_device, MR_CTRL_GET_CONFIG, &adc_config);
|
||||
mr_device_ioctl(adc_device, MR_DEVICE_CTRL_GET_CONFIG, &adc_config);
|
||||
|
||||
/* 使能通道5 */
|
||||
adc_config.channel.ch5 = MR_ENABLE;
|
||||
mr_device_ioctl(adc_device, MR_CTRL_SET_CONFIG, &adc_config);
|
||||
mr_device_ioctl(adc_device, MR_DEVICE_CTRL_SET_CONFIG, &adc_config);
|
||||
```
|
||||
|
||||
----------
|
||||
@@ -122,22 +121,20 @@ mr_device_ioctl(adc_device, MR_CTRL_SET_CONFIG, &adc_config);
|
||||
## 读取ADC设备通道输入值
|
||||
|
||||
```c
|
||||
mr_ssize_t mr_device_read(mr_device_t device, mr_pos_t pos, const void *buffer, mr_size_t size);
|
||||
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | ADC设备句柄 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据地址 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
| 参数 | 描述 |
|
||||
|:----------|:-------|
|
||||
| device | ADC设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据地址 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
|
||||
- 读取位置:需要读取数据的通道。
|
||||
- 读取数据:ADC设备采集的输入值。
|
||||
|
||||
ADC设备数据为uint32格式。
|
||||
- 读取位置:需要读取数据的通道,有效范围:0-31。
|
||||
- 读取数据:ADC设备采集的输入值,类型为:uint32。
|
||||
|
||||
使用示例:
|
||||
|
||||
@@ -148,12 +145,12 @@ ADC设备数据为uint32格式。
|
||||
mr_device_t adc_device = mr_device_find("adc1");
|
||||
|
||||
/* 以只读方式打开 */
|
||||
mr_device_open(adc_device, MR_OPEN_RDONLY);
|
||||
mr_device_open(adc_device, MR_DEVICE_OFLAG_RDONLY);
|
||||
|
||||
/* 使能通道5 */
|
||||
struct mr_adc_config adc_config;
|
||||
adc_config.channel.ch5 = MR_ENABLE;
|
||||
mr_device_ioctl(adc_device, MR_CTRL_SET_CONFIG, &adc_config);
|
||||
mr_device_ioctl(adc_device, MR_DEVICE_CTRL_SET_CONFIG, &adc_config);
|
||||
|
||||
/* 读取通道5输入值 */
|
||||
mr_uint32_t adc_value = 0;
|
||||
|
||||
@@ -8,17 +8,16 @@ DAC(数模转换器)是一种可以将离散数字信号转换为连续模
|
||||
|
||||
----------
|
||||
|
||||
## 准备工作
|
||||
## 准备
|
||||
|
||||
1. 引用 `mrdrv.h` 头文件以使用驱动部分。
|
||||
2. 调用DAC设备初始化函数(如果实现了自动初始化,则无需调用)。
|
||||
3. 使能 `mrconfig.h` 头文件中DAC宏开关。
|
||||
1. 调用DAC设备初始化函数(如果实现了自动初始化,则无需调用)。
|
||||
2. 使能 `mrconfig.h` 头文件中DAC宏开关。
|
||||
|
||||
----------
|
||||
|
||||
## 调用关系
|
||||
|
||||

|
||||

|
||||
|
||||
----------
|
||||
|
||||
@@ -32,7 +31,7 @@ mr_device_t mr_device_find(const char *name);
|
||||
|:--------|:-------|
|
||||
| name | DAC设备名 |
|
||||
| **返回** | |
|
||||
| DAC句柄 | 查找设备成功 |
|
||||
| DAC | 查找设备成功 |
|
||||
| MR_NULL | 查找设备失败 |
|
||||
|
||||
----------
|
||||
@@ -40,21 +39,21 @@ mr_device_t mr_device_find(const char *name);
|
||||
## 打开DAC设备
|
||||
|
||||
```c
|
||||
mr_err_t mr_device_open(mr_device_t device, mr_uint16_t flags);
|
||||
mr_err_t mr_device_open(mr_device_t device, mr_uint8_t oflags);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | DAC设备句柄 |
|
||||
| flags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:------------|:-------|
|
||||
| device | DAC设备 |
|
||||
| oflags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
|
||||
DAC设备支持以下打开方式:
|
||||
|
||||
```c
|
||||
MR_OPEN_WRONLY /* 只写 */
|
||||
MR_DEVICE_OFLAG_WRONLY /* 只写 */
|
||||
```
|
||||
|
||||
----------
|
||||
@@ -67,7 +66,7 @@ mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | DAC设备句柄 |
|
||||
| device | DAC设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
@@ -77,8 +76,8 @@ mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
|
||||
DAC设备支持以下命令:
|
||||
|
||||
```c
|
||||
MR_CTRL_SET_CONFIG /* 设置参数 */
|
||||
MR_CTRL_GET_CONFIG /* 获取参数 */
|
||||
MR_DEVICE_CTRL_SET_CONFIG /* 设置参数 */
|
||||
MR_DEVICE_CTRL_GET_CONFIG /* 获取参数 */
|
||||
```
|
||||
|
||||
### 设置DAC设备通道
|
||||
@@ -106,15 +105,15 @@ MR_ENABLE 1 /* 使能通
|
||||
mr_device_t dac_device = mr_device_find("dac1");
|
||||
|
||||
/* 以只写方式打开 */
|
||||
mr_device_open(dac_device, MR_OPEN_WRONLY);
|
||||
mr_device_open(dac_device, MR_DEVICE_OFLAG_WRONLY);
|
||||
|
||||
/* 获取参数 */
|
||||
struct mr_dac_config dac_config;
|
||||
mr_device_ioctl(dac_device, MR_CTRL_GET_CONFIG, &dac_config);
|
||||
mr_device_ioctl(dac_device, MR_DEVICE_CTRL_GET_CONFIG, &dac_config);
|
||||
|
||||
/* 使能通道1 */
|
||||
dac_config.channel.ch1 = MR_ENABLE;
|
||||
mr_device_ioctl(dac_device, MR_CTRL_SET_CONFIG, &dac_config);
|
||||
mr_device_ioctl(dac_device, MR_DEVICE_CTRL_SET_CONFIG, &dac_config);
|
||||
```
|
||||
|
||||
----------
|
||||
@@ -122,22 +121,20 @@ mr_device_ioctl(dac_device, MR_CTRL_SET_CONFIG, &dac_config);
|
||||
## 写入DAC设备通道输出值
|
||||
|
||||
```c
|
||||
mr_ssize_t mr_device_write(mr_device_t device, mr_pos_t pos, const void *buffer, mr_size_t size);
|
||||
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | DAC设备句柄 |
|
||||
| device | DAC设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
|
||||
- 写入位置:需要写入数据的通道。
|
||||
- 写入数据:DAC设备输出值。
|
||||
|
||||
DAC设备数据为uint32格式。
|
||||
- 写入位置:需要写入数据的通道,有效范围:0-31。
|
||||
- 写入数据:DAC设备输出值,类型为:uint32。
|
||||
|
||||
使用示例:
|
||||
|
||||
@@ -148,11 +145,11 @@ DAC设备数据为uint32格式。
|
||||
mr_device_t dac_device = mr_device_find("dac1");
|
||||
|
||||
/* 以只写方式打开 */
|
||||
mr_device_open(dac_device, MR_OPEN_WRONLY);
|
||||
mr_device_open(dac_device, MR_DEVICE_OFLAG_WRONLY);
|
||||
|
||||
/* 使能通道1 */
|
||||
dac_config.channel.ch1 = MR_ENABLE;
|
||||
mr_device_ioctl(dac_device, MR_CTRL_SET_CONFIG, &dac_config);
|
||||
mr_device_ioctl(dac_device, MR_DEVICE_CTRL_SET_CONFIG, &dac_config);
|
||||
|
||||
/* 写入通道1输出值 */
|
||||
mr_uint32_t dac_value = 1200;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## 操作流程图
|
||||
|
||||

|
||||

|
||||
|
||||
## 设备模型
|
||||
|
||||
@@ -15,16 +15,15 @@ struct mr_device
|
||||
{
|
||||
struct mr_object object; /* 设备对象基类 */
|
||||
|
||||
enum mr_device_type type; /* 设备类型 */
|
||||
mr_uint16_t support_flag; /* 设备支持的打开方式 */
|
||||
mr_uint16_t open_flag; /* 设备打开方式 */
|
||||
mr_uint8_t type; /* 设备类型 */
|
||||
mr_uint8_t sflags; /* 设备支持的打开方式 */
|
||||
mr_uint8_t oflags; /* 设备打开方式 */
|
||||
mr_uint8_t reserved; /* 保留 */
|
||||
mr_size_t ref_count; /* 设备被引用次数 */
|
||||
|
||||
mr_err_t (*rx_cb)(mr_device_t device, void *args); /* 设备接收回调函数 */
|
||||
mr_err_t (*tx_cb)(mr_device_t device, void *args); /* 设备发送回调函数 */
|
||||
|
||||
const struct mr_device_ops *ops; /* 设备操作方法 */
|
||||
|
||||
void *data; /* 设备数据 */
|
||||
};
|
||||
```
|
||||
@@ -57,17 +56,16 @@ enum mr_device_type
|
||||
设备只能以支持的打开方式打开,定义如下:
|
||||
|
||||
```c
|
||||
MR_OPEN_RDONLY 0x1000 /* 只读打开 */
|
||||
MR_OPEN_WRONLY 0x2000 /* 只写打开 */
|
||||
MR_OPEN_RDWR 0x3000 /* 可读可写 */
|
||||
|
||||
MR_OPEN_NONBLOCKING 0x4000 /* 非阻塞 */
|
||||
MR_DEVICE_OFLAG_RDONLY 0x10 /* 只读打开 */
|
||||
MR_DEVICE_OFLAG_WRONLY 0x20 /* 只写打开 */
|
||||
MR_DEVICE_OFLAG_RDWR 0x30 /* 可读可写 */
|
||||
MR_DEVICE_OFLAG_NONBLOCKING 0x40 /* 非阻塞 */
|
||||
```
|
||||
|
||||
打开方式可或使用,例如:
|
||||
非阻塞打开方式可与其他打开方式相或使用,例如:
|
||||
|
||||
```c
|
||||
(MR_OPEN_RDWR | MR_OPEN_NONBLOCKING) /* 非阻塞可读可写 */
|
||||
(MR_DEVICE_OFLAG_RDWR | MR_DEVICE_OFLAG_NONBLOCKING) /* 非阻塞可读可写 */
|
||||
```
|
||||
|
||||
### 设备操作方法
|
||||
@@ -80,8 +78,8 @@ struct mr_device_ops
|
||||
mr_err_t (*open)(mr_device_t device);
|
||||
mr_err_t (*close)(mr_device_t device);
|
||||
mr_err_t (*ioctl)(mr_device_t device, int cmd, void *args);
|
||||
mr_ssize_t (*read)(mr_device_t device, mr_pos_t pos, void *buffer, mr_size_t size);
|
||||
mr_ssize_t (*write)(mr_device_t device, mr_pos_t pos, const void *buffer, mr_size_t size);
|
||||
mr_ssize_t (*read)(mr_device_t device, mr_off_t pos, void *buffer, mr_size_t size);
|
||||
mr_ssize_t (*write)(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
};
|
||||
```
|
||||
|
||||
@@ -126,25 +124,24 @@ mr_device_t spi0_device = mr_device_find("spi10");
|
||||
mr_device_t spi1_device = mr_device_find("spi11");
|
||||
|
||||
/* 挂载总线 */
|
||||
mr_device_ioctl(spi0_device, MR_CTRL_ATTACH, "spi1");
|
||||
mr_device_ioctl(spi1_device, MR_CTRL_ATTACH, "spi1");
|
||||
mr_device_ioctl(spi0_device, MR_DEVICE_CTRL_CONNECT, "spi1");
|
||||
mr_device_ioctl(spi1_device, MR_DEVICE_CTRL_CONNECT, "spi1");
|
||||
|
||||
/* 以可读可写的方式打开 */
|
||||
mr_device_open(spi0_device, MR_OPEN_RDWR);
|
||||
mr_device_open(spi1_device, MR_OPEN_RDWR);
|
||||
mr_device_open(spi0_device, MR_DEVICE_OFLAG_RDWR);
|
||||
mr_device_open(spi1_device, MR_DEVICE_OFLAG_RDWR);
|
||||
|
||||
/* 发送数据 */
|
||||
char buffer0[] = "hello";
|
||||
char buffer1[] = "world";
|
||||
mr_device_write(spi0_device, 0, buffer0, sizeof(buffer0) - 1);
|
||||
mr_device_write(spi1_device, 0, buffer1, sizeof(buffer1) - 1);
|
||||
mr_device_write(spi0_device, -1, buffer0, sizeof(buffer0) - 1);
|
||||
mr_device_write(spi1_device, -1, buffer1, sizeof(buffer1) - 1);
|
||||
|
||||
/* 读取数据 */
|
||||
mr_device_read(spi0_device, 0, buffer0, sizeof(buffer0) - 1);
|
||||
mr_device_read(spi1_device, 0, buffer1, sizeof(buffer1) - 1);
|
||||
mr_device_read(spi0_device, -1, buffer0, sizeof(buffer0) - 1);
|
||||
mr_device_read(spi1_device, -1, buffer1, sizeof(buffer1) - 1);
|
||||
|
||||
/* 关闭设备 */
|
||||
mr_device_close(spi0_device);
|
||||
mr_device_close(spi1_device);
|
||||
```
|
||||
|
||||
```
|
||||
@@ -8,17 +8,16 @@ GPIO(通用目的输入/输出)是一种可以通过软件进行控制的硬
|
||||
|
||||
----------
|
||||
|
||||
## 准备工作
|
||||
## 准备
|
||||
|
||||
1. 引用 `mrdrv.h` 头文件以使用驱动部分。
|
||||
2. 调用PIN设备初始化函数(如果实现了自动初始化,则无需调用)。
|
||||
3. 使能 `mrconfig.h` 头文件中PIN宏开关。
|
||||
1. 调用PIN设备初始化函数(如果实现了自动初始化,则无需调用)。
|
||||
2. 使能 `mrconfig.h` 头文件中PIN宏开关。
|
||||
|
||||
----------
|
||||
|
||||
## 调用关系
|
||||
|
||||

|
||||

|
||||
|
||||
----------
|
||||
|
||||
@@ -32,7 +31,7 @@ mr_device_t mr_device_find(const char *name);
|
||||
|:--------|:-------|
|
||||
| name | PIN设备名 |
|
||||
| **返回** | |
|
||||
| PIN句柄 | 查找设备成功 |
|
||||
| PIN | 查找设备成功 |
|
||||
| MR_NULL | 查找设备失败 |
|
||||
|
||||
----------
|
||||
@@ -40,23 +39,23 @@ mr_device_t mr_device_find(const char *name);
|
||||
## 打开PIN设备
|
||||
|
||||
```c
|
||||
mr_err_t mr_device_open(mr_device_t device, mr_uint16_t flags);
|
||||
mr_err_t mr_device_open(mr_device_t device, mr_uint8_t oflags);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | PIN设备句柄 |
|
||||
| flags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
| 参数 | 描述 |
|
||||
|:------------|:-------|
|
||||
| device | PIN设备 |
|
||||
| oflags | 打开方式 |
|
||||
| **返回** | |
|
||||
| MR_ERR_OK | 打开设备成功 |
|
||||
| 错误码 | 打开设备失败 |
|
||||
|
||||
PIN设备支持以下打开方式:
|
||||
|
||||
```c
|
||||
MR_OPEN_RDONLY /* 只读 */
|
||||
MR_OPEN_WRONLY /* 只写 */
|
||||
MR_OPEN_RDWR /* 可读可写 */
|
||||
MR_DEVICE_OFLAG_RDONLY /* 只读 */
|
||||
MR_DEVICE_OFLAG_WRONLY /* 只写 */
|
||||
MR_DEVICE_OFLAG_RDWR /* 可读可写 */
|
||||
```
|
||||
|
||||
----------
|
||||
@@ -69,7 +68,7 @@ mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | PIN设备句柄 |
|
||||
| device | PIN设备 |
|
||||
| cmd | 控制命令 |
|
||||
| args | 控制参数 |
|
||||
| **返回** | |
|
||||
@@ -79,8 +78,8 @@ mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
|
||||
PIN设备支持以下命令:
|
||||
|
||||
```c
|
||||
MR_CTRL_SET_CONFIG /* 设置参数 */
|
||||
MR_CTRL_SET_RX_CB /* 设置接收(外部中断)回调函数 */
|
||||
MR_DEVICE_CTRL_SET_CONFIG /* 设置参数 */
|
||||
MR_DEVICE_CTRL_SET_RX_CB /* 设置接收(外部中断)回调函数 */
|
||||
```
|
||||
|
||||
### 设置PIN设备IO
|
||||
@@ -90,8 +89,8 @@ PIN控制参数原型如下:
|
||||
```c
|
||||
struct mr_pin_config
|
||||
{
|
||||
mr_pos_t number; /* IO编号 */
|
||||
mr_uint8_t mode; /* 模式 */
|
||||
mr_off_t number: 28; /* IO编号 */
|
||||
mr_uint32_t mode: 4; /* 模式 */
|
||||
};
|
||||
```
|
||||
|
||||
@@ -124,13 +123,13 @@ MR_PIN_MODE_IRQ_HIGH /* 高电平
|
||||
mr_device_t pin_device = mr_device_find("pin");
|
||||
|
||||
/* 以可读可写的方式打开 */
|
||||
mr_device_open(pin_device, MR_OPEN_RDWR);
|
||||
mr_device_open(pin_device, MR_DEVICE_OFLAG_RDWR);
|
||||
|
||||
/* 设置B13引脚为推挽输出模式 */
|
||||
struct mr_pin_config pin_config;
|
||||
pin_config.number = PIN_NUMBER;
|
||||
pin_config.mode = MR_PIN_MODE_OUTPUT;
|
||||
mr_device_ioctl(pin_device, MR_CTRL_SET_CONFIG, &pin_config);
|
||||
mr_device_ioctl(pin_device, MR_DEVICE_CTRL_SET_CONFIG, &pin_config);
|
||||
```
|
||||
|
||||
### 设置PIN设备IO外部中断并绑定回调函数
|
||||
@@ -145,7 +144,7 @@ mr_device_ioctl(pin_device, MR_CTRL_SET_CONFIG, &pin_config);
|
||||
/* 定义回调函数 */
|
||||
mr_err_t pin_device_cb(mr_device_t device, void *args)
|
||||
{
|
||||
mr_pos_t number = *(mr_pos_t *)args; /* 获取中断源 */
|
||||
mr_off_t number = *(mr_off_t *)args; /* 获取中断源 */
|
||||
|
||||
/* 判断中断源B13 */
|
||||
if (number == PIN_NUMBER)
|
||||
@@ -158,38 +157,37 @@ mr_err_t pin_device_cb(mr_device_t device, void *args)
|
||||
mr_device_t pin_device = mr_device_find("pin");
|
||||
|
||||
/* 以可读可写的方式打开 */
|
||||
mr_device_open(pin_device, MR_OPEN_RDWR);
|
||||
mr_device_open(pin_device, MR_DEVICE_OFLAG_RDWR);
|
||||
|
||||
/* 设置B13引脚为上升沿触发模式 */
|
||||
struct mr_pin_config pin_config;
|
||||
pin_config.number = PIN_NUMBER;
|
||||
pin_config.mode = MR_PIN_MODE_IRQ_RISING;
|
||||
mr_device_ioctl(pin_device, MR_CTRL_SET_CONFIG, &pin_config);
|
||||
mr_device_ioctl(pin_device, MR_DEVICE_CTRL_SET_CONFIG, &pin_config);
|
||||
|
||||
/* 设置回调函数 */
|
||||
mr_device_ioctl(pin_device, MR_CTRL_SET_RX_CB, pin_device_cb);
|
||||
mr_device_ioctl(pin_device, MR_DEVICE_CTRL_SET_RX_CB, pin_device_cb);
|
||||
```
|
||||
|
||||
----------
|
||||
|
||||
## 读取PIN设备IO电平
|
||||
## 读取PIN设备IO输入电平
|
||||
|
||||
```c
|
||||
mr_ssize_t mr_device_read(mr_device_t device, mr_pos_t pos, const void *buffer, mr_size_t size);
|
||||
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | PIN设备句柄 |
|
||||
| device | PIN设备 |
|
||||
| pos | 读取位置 |
|
||||
| buffer | 读取数据 |
|
||||
| size | 读取数据大小 |
|
||||
| **返回** | |
|
||||
| 实际读取的数据大小 | |
|
||||
|
||||
- 读取位置:指需要读取的IO编号,如读取B13,则pos = 29。
|
||||
|
||||
PIN设备数据为int8格式。
|
||||
- 读取位置:需要读取的IO编号,如读取B13,则pos = 29,有效范围:>=0。
|
||||
- 读取数据:PIN设备IO输入电平,类型为:int8。
|
||||
|
||||
使用示例:
|
||||
|
||||
@@ -200,39 +198,38 @@ PIN设备数据为int8格式。
|
||||
mr_device_t pin_device = mr_device_find("pin");
|
||||
|
||||
/* 以可读可写的方式打开 */
|
||||
mr_device_open(pin_device, MR_OPEN_RDWR);
|
||||
mr_device_open(pin_device, MR_DEVICE_OFLAG_RDWR);
|
||||
|
||||
/* 设置B13引脚为浮空输入模式 */
|
||||
struct mr_pin_config pin_config;
|
||||
pin_config.number = PIN_NUMBER;
|
||||
pin_config.mode = MR_PIN_MODE_INPUT;
|
||||
mr_device_ioctl(pin_device, MR_CTRL_SET_CONFIG, &pin_config);
|
||||
mr_device_ioctl(pin_device, MR_DEVICE_CTRL_SET_CONFIG, &pin_config);
|
||||
|
||||
/* 获取B13电平 */
|
||||
mr_level_t pin_level = MR_LOW;
|
||||
mr_level_t pin_level;
|
||||
mr_device_read(pin_device, PIN_NUMBER, &pin_level, sizeof(pin_level));
|
||||
```
|
||||
|
||||
----------
|
||||
|
||||
## 写入PIN设备IO电平
|
||||
## 写入PIN设备IO输出电平
|
||||
|
||||
```c
|
||||
mr_ssize_t mr_device_write(mr_device_t device, mr_pos_t pos, const void *buffer, mr_size_t size);
|
||||
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
|
||||
```
|
||||
|
||||
| 参数 | 描述 |
|
||||
|:----------|:--------|
|
||||
| device | PIN设备句柄 |
|
||||
| device | PIN设备 |
|
||||
| pos | 写入位置 |
|
||||
| buffer | 写入数据 |
|
||||
| size | 写入数据大小 |
|
||||
| **返回** | |
|
||||
| 实际写入的数据大小 | |
|
||||
|
||||
- 写入位置:指需要写入的IO编号,如读取B13,则pos = 29。
|
||||
|
||||
PIN设备数据为int8格式。
|
||||
- 写入位置:需要写入的IO编号,如读取B13,则pos = 29,有效范围:>=0。
|
||||
- 写入数据:PIN设备IO输出电平,类型为:int8。
|
||||
|
||||
使用示例:
|
||||
|
||||
@@ -243,13 +240,13 @@ PIN设备数据为int8格式。
|
||||
mr_device_t pin_device = mr_device_find("pin");
|
||||
|
||||
/* 以可读可写的方式打开 */
|
||||
mr_device_open(pin_device, MR_OPEN_RDWR);
|
||||
mr_device_open(pin_device, MR_DEVICE_OFLAG_RDWR);
|
||||
|
||||
/* 设置B13引脚为推挽输出模式 */
|
||||
struct mr_pin_config pin_config;
|
||||
pin_config.number = PIN_NUMBER;
|
||||
pin_config.mode = MR_PIN_MODE_OUTPUT;
|
||||
mr_device_ioctl(pin_device, MR_CTRL_SET_CONFIG, &pin_config);
|
||||
mr_device_ioctl(pin_device, MR_DEVICE_CTRL_SET_CONFIG, &pin_config);
|
||||
|
||||
/* 设置B13为高电平 */
|
||||
mr_level_t pin_level = MR_HIGH;
|
||||
|
||||
@@ -2,46 +2,43 @@
|
||||
|
||||
----------
|
||||
|
||||
## 准备工作
|
||||
## 拉取代码
|
||||
|
||||
在开始之前,请从 [gitee仓库](https://gitee.com/MacRsh/mr-library.git) 拉去最新代码。
|
||||
在开始之前,请从 [gitee仓库](https://gitee.com/MacRsh/mr-library.git) 拉取代码。
|
||||
|
||||
代码包含以下文件:
|
||||
|
||||
| 名称 | 描述 |
|
||||
|:-----------|:------|
|
||||
| mr_library | |
|
||||
| -bsp | 板级支持包 |
|
||||
| -device | 设备文件 |
|
||||
| -document | 文档 |
|
||||
| -driver | 驱动文件 |
|
||||
| -include | 头文件 |
|
||||
| -module | 组件 |
|
||||
| -package | 软件包 |
|
||||
| -src | 源文件 |
|
||||
| 名称 | 描述 |
|
||||
|:-----------|:--------|
|
||||
| mr_library | |
|
||||
| -bsp | 板级支持包 |
|
||||
| -device | 设备文件 |
|
||||
| -document | 文档 |
|
||||
| -driver | 驱动文件 |
|
||||
| -include | 库头文件 |
|
||||
| -module | 组件 |
|
||||
| -package | 软件包 |
|
||||
| -src | 库源文件 |
|
||||
|
||||
选择工程所需的文件:
|
||||
选择需要的文件:
|
||||
|
||||
| 名称 | 描述 |
|
||||
|:-----------|:-----|
|
||||
| mr_library | |
|
||||
| -include | 头文件 |
|
||||
| -src | 源文件 |
|
||||
| 使用设备框架时添加 | |
|
||||
| -device | 设备文件 |
|
||||
| -driver | 驱动文件 |
|
||||
|
||||
----------
|
||||
|
||||
## 配置工程
|
||||
## 加载项目
|
||||
|
||||
1. 将 `mr_library` 文件添加到项目中,并将文件路径添加到项目设置中。
|
||||
2. 按需配置 `mrconfig.h` 文件中宏开关,裁剪框架。
|
||||
3. 引用 `mrlib.h` 头文件。
|
||||
1. 将上述文件添加到您的项目中,从 `bsp` 目录中选择芯片对应的驱动文件,并将其复制(替换)到 `driver` 目录中,并将上述文件路径添加到您的项目路径中。
|
||||
2. 配置 `mrboard.h` 文件中宏定义完成芯片外设裁剪。
|
||||
3. 配置 `mrconfig.h` 文件中宏开关,裁剪不需要的功能。
|
||||
4. 引用 `mrlib.h` 头文件,开始使用。
|
||||
|
||||
使用设备框架时,请再完成以下步骤:
|
||||
1. 从 `bsp` 目录中选择芯片的驱动文件,并将它们放入 `driver` 目录中。
|
||||
2. 在 `mrboard.h` 文件指定位置处添加芯片头文件,修改宏定义完成外设裁剪。
|
||||
3. 引用 `mrdrv.h` 头文件以使用设备框架部分。
|
||||
----------
|
||||
|
||||
如使能了自动初始化功能,请查看自动初始化使用手册。
|
||||
Reference in New Issue
Block a user