1.优化keil文件不最后不加一行报警告的问题。

This commit is contained in:
MacRsh
2023-10-14 23:17:35 +08:00
parent fcfbc93a3b
commit 1a940136f9
66 changed files with 365 additions and 353 deletions

View File

@@ -1,6 +1,6 @@
# 简介
**mr-library** 是一个专为嵌入式系统设计的轻量级框架,模块化的软件架构充分考虑了嵌入式系统的资源和性能要求。
**mr-library** 是一个专为嵌入式系统设计的轻量级框架,模块化的软件架构充分考虑了嵌入式系统的资源和性能要求。
通过提供标准化的设备管理等,极大地简化了嵌入式应用的开发难度,帮助开发者快速构建嵌入式应用程序。
**设备框架** 为开发者提供标准化的接口open、close、ioctl、read、write解耦应用程序与底层硬件驱动使应用开发无需硬件驱动的实现细节。

View File

@@ -147,4 +147,4 @@ mr_err_t drv_adc_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_adc_init);
#endif
#endif

View File

@@ -29,4 +29,4 @@ struct drv_adc_data
#endif
#endif /* _DRV_ADC_H_ */
#endif /* _DRV_ADC_H_ */

View File

@@ -29,4 +29,4 @@ struct drv_dac_data
#endif
#endif /* _DRV_DAC_H_ */
#endif /* _DRV_DAC_H_ */

View File

@@ -14,4 +14,4 @@
#include "device/pin.h"
#include "mrboard.h"
#endif /* _DRV_GPIO_H_ */
#endif /* _DRV_GPIO_H_ */

View File

@@ -31,4 +31,4 @@ struct drv_soft_i2c_bus_data
#endif
#endif /* _DRV_I2C_H_ */
#endif /* _DRV_I2C_H_ */

View File

@@ -41,38 +41,41 @@ enum
};
static struct ch32_pwm_data ch32_pwm_data[] =
{
{
#ifdef MR_BSP_PWM_1
{"pwm1",TIM1,RCC_APB2Periph_TIM1,RCC_APB2Periph_GPIOA,GPIOA,GPIO_Pin_8,GPIO_Pin_9,GPIO_Pin_10,GPIO_Pin_11},
{"pwm1", TIM1, RCC_APB2Periph_TIM1, RCC_APB2Periph_GPIOA, GPIOA, GPIO_Pin_8, GPIO_Pin_9, GPIO_Pin_10,
GPIO_Pin_11},
#endif
#ifdef MR_BSP_PWM_2
{"pwm2",TIM2,RCC_APB1Periph_TIM2,RCC_APB2Periph_GPIOA,GPIOA,GPIO_Pin_0,GPIO_Pin_1,GPIO_Pin_2,GPIO_Pin_3},
{"pwm2", TIM2, RCC_APB1Periph_TIM2, RCC_APB2Periph_GPIOA, GPIOA, GPIO_Pin_0, GPIO_Pin_1, GPIO_Pin_2,
GPIO_Pin_3},
#endif
#ifdef MR_BSP_PWM_3
{"pwm3",TIM3,RCC_APB1Periph_TIM3,RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB,GPIOA,GPIO_Pin_6,GPIO_Pin_7,},
{"pwm3", TIM3, RCC_APB1Periph_TIM3, RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, GPIOA, GPIO_Pin_6,
GPIO_Pin_7,},
#endif
#ifdef MR_BSP_PWM_4
{"pwm4",TIM4,RCC_APB1Periph_TIM4,RCC_APB2Periph_GPIOD},
{"pwm4", TIM4, RCC_APB1Periph_TIM4, RCC_APB2Periph_GPIOD},
#endif
#ifdef MR_BSP_PWM_5
{"pwm5",TIM5,RCC_APB1Periph_TIM5},
{"pwm5", TIM5, RCC_APB1Periph_TIM5},
#endif
#ifdef MR_BSP_PWM_6
{"pwm6",TIM6,RCC_APB1Periph_TIM6},
{"pwm6", TIM6, RCC_APB1Periph_TIM6},
#endif
#ifdef MR_BSP_PWM_7
{"pwm7",TIM7,RCC_APB1Periph_TIM7},
{"pwm7", TIM7, RCC_APB1Periph_TIM7},
#endif
#ifdef MR_BSP_PWM_8
{"pwm8",TIM8,RCC_APB2Periph_TIM8},
{"pwm8", TIM8, RCC_APB2Periph_TIM8},
#endif
#ifdef MR_BSP_PWM_9
{"pwm9",TIM9,RCC_APB2Periph_TIM9},
{"pwm9", TIM9, RCC_APB2Periph_TIM9},
#endif
#ifdef MR_BSP_PWM_10
{"pwm10",TIM10,RCC_APB2Periph_TIM10},
{"pwm10", TIM10, RCC_APB2Periph_TIM10},
#endif
};
};
static struct mr_pwm pwm_device[mr_array_num(ch32_pwm_data)];
@@ -94,11 +97,11 @@ static mr_uint32_t ch32_pwm_read(mr_pwm_t pwm, mr_off_t channel)
mr_err_t drv_pwm_init(void)
{
static struct mr_pwm_ops drv_ops =
{
ch32_pwm_configure,
ch32_pwm_write,
ch32_pwm_read,
};
{
ch32_pwm_configure,
ch32_pwm_write,
ch32_pwm_read,
};
mr_size_t count = mr_array_num(pwm_device);
mr_err_t ret = MR_ERR_OK;
@@ -106,8 +109,8 @@ mr_err_t drv_pwm_init(void)
{
ret = mr_pwm_device_add(&pwm_device[count],
ch32_pwm_data[count].name,
&drv_ops,&ch32_pwm_data[count]
);
&drv_ops, &ch32_pwm_data[count]
);
MR_ASSERT(ret == MR_ERR_OK);
}
@@ -115,4 +118,4 @@ mr_err_t drv_pwm_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_pwm_init);
#endif
#endif

View File

@@ -368,4 +368,4 @@ mr_err_t drv_spi_bus_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_spi_bus_init);
#endif
#endif

View File

@@ -35,4 +35,4 @@ struct drv_spi_bus_data
#endif
#endif /* _DRV_SPI_H_ */
#endif /* _DRV_SPI_H_ */

View File

@@ -313,4 +313,4 @@ mr_err_t drv_timer_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_timer_init);
#endif
#endif

View File

@@ -30,4 +30,4 @@ struct drv_timer_data
#endif
#endif /* _DRV_TIMER_H_ */
#endif /* _DRV_TIMER_H_ */

View File

@@ -240,7 +240,6 @@ static mr_uint8_t drv_serial_read(mr_serial_t serial)
return 0;
}
}
return uart_data->instance->DATAR & 0xff;
}
@@ -362,4 +361,4 @@ mr_err_t drv_uart_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_uart_init);
#endif
#endif

View File

@@ -35,4 +35,4 @@ struct drv_uart_data
#endif
#endif /* _DRV_UART_H_ */
#endif /* _DRV_UART_H_ */

View File

@@ -18,4 +18,4 @@ void mr_delay_us(mr_size_t us)
void mr_delay_ms(mr_size_t ms)
{
Delay_Ms(ms);
}
}

View File

@@ -45,4 +45,4 @@
#include "drv_timer.h"
#endif
#endif /* _MR_DRV_H_ */
#endif /* _MR_DRV_H_ */

View File

@@ -140,4 +140,4 @@ mr_err_t mr_adc_device_add(mr_adc_t adc, const char *name, struct mr_adc_ops *op
return mr_device_add(&adc->device, name, Mr_Device_Type_ADC, MR_DEVICE_OFLAG_RDONLY, &device_ops, data);
}
#endif
#endif

View File

@@ -65,4 +65,4 @@ mr_err_t mr_adc_device_add(mr_adc_t adc, const char *name, struct mr_adc_ops *op
}
#endif
#endif /* _ADC_H_ */
#endif /* _ADC_H_ */

View File

@@ -140,4 +140,4 @@ mr_err_t mr_dac_device_add(mr_dac_t dac, const char *name, struct mr_dac_ops *op
return mr_device_add(&dac->device, name, Mr_Device_Type_DAC, MR_DEVICE_OFLAG_WRONLY, &device_ops, data);
}
#endif
#endif

View File

@@ -65,4 +65,4 @@ mr_err_t mr_dac_device_add(mr_dac_t dac, const char *name, struct mr_dac_ops *op
}
#endif
#endif /* _DAC_H_ */
#endif /* _DAC_H_ */

View File

@@ -644,4 +644,4 @@ mr_err_t mr_soft_i2c_bus_add(mr_soft_i2c_bus_t i2c_bus, const char *name, struct
return mr_i2c_bus_add(&i2c_bus->i2c_bus, name, &i2c_bus_ops, data);
}
#endif
#endif

View File

@@ -163,4 +163,4 @@ mr_err_t mr_soft_i2c_bus_add(mr_soft_i2c_bus_t i2c_bus, const char *name, struct
}
#endif
#endif /* _I2C_H_ */
#endif /* _I2C_H_ */

View File

@@ -146,4 +146,4 @@ void mr_pin_device_isr(mr_pin_t pin, mr_off_t number)
}
}
#endif
#endif

View File

@@ -84,4 +84,4 @@ void mr_pin_device_isr(mr_pin_t pin, mr_off_t number);
}
#endif
#endif /* _PIN_H_ */
#endif /* _PIN_H_ */

View File

@@ -159,4 +159,4 @@ mr_err_t mr_pwm_device_add(mr_pwm_t pwm, const char *name, struct mr_pwm_ops *op
return mr_device_add(&pwm->device, name, Mr_Device_Type_PWM, MR_DEVICE_OFLAG_RDWR, &device_ops, data);
}
#endif
#endif

View File

@@ -283,4 +283,4 @@ void mr_serial_device_isr(mr_serial_t serial, mr_uint32_t event)
}
}
#endif
#endif

View File

@@ -134,4 +134,4 @@ void mr_serial_device_isr(mr_serial_t serial, mr_uint32_t event);
}
#endif
#endif /* _SERIAL_H_ */
#endif /* _SERIAL_H_ */

View File

@@ -703,4 +703,4 @@ void mr_spi_bus_isr(mr_spi_bus_t spi_bus, mr_uint32_t event)
}
}
#endif
#endif

View File

@@ -176,4 +176,4 @@ void mr_spi_bus_isr(mr_spi_bus_t spi_bus, mr_uint32_t event);
}
#endif
#endif /* _SPI_H_ */
#endif /* _SPI_H_ */

View File

@@ -313,4 +313,4 @@ void mr_timer_device_isr(mr_timer_t timer, mr_uint32_t event)
}
}
#endif
#endif

View File

@@ -164,7 +164,7 @@
...
}
```
3. 结构体,宏等定义需添加注释:
```c

View File

@@ -31,7 +31,7 @@ mr_device_t mr_device_find(const char *name);
|:--------|:-------|
| name | DAC设备名 |
| **返回** | |
| DAC | 查找设备成功 |
| DAC | 查找设备成功 |
| MR_NULL | 查找设备失败 |
----------
@@ -42,13 +42,13 @@ mr_device_t mr_device_find(const char *name);
mr_err_t mr_device_open(mr_device_t device, mr_uint8_t oflags);
```
| 参数 | 描述 |
|:------------|:-------|
| device | DAC设备 |
| oflags | 打开方式 |
| **返回** | |
| MR_ERR_OK | 打开设备成功 |
| 错误码 | 打开设备失败 |
| 参数 | 描述 |
|:----------|:-------|
| device | DAC设备 |
| oflags | 打开方式 |
| **返回** | |
| MR_ERR_OK | 打开设备成功 |
| 错误码 | 打开设备失败 |
DAC设备支持以下打开方式
@@ -64,14 +64,14 @@ MR_DEVICE_OFLAG_WRONLY /* 只写 */
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
```
| 参数 | 描述 |
|:----------|:--------|
| device | DAC设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
| 参数 | 描述 |
|:----------|:-------|
| device | DAC设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
DAC设备支持以下命令
@@ -124,14 +124,14 @@ mr_device_ioctl(dac_device, MR_DEVICE_CTRL_SET_CONFIG, &dac_config);
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
```
| 参数 | 描述 |
|:----------|:--------|
| device | DAC设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
| 参数 | 描述 |
|:----------|:-------|
| device | DAC设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
- 写入位置需要写入数据的通道有效范围0-31。
- 写入数据DAC设备输出值类型为uint32。

View File

@@ -22,14 +22,14 @@ I2CInter-Integrated Circuit是一种串行外设接口用于连接和
mr_err_t mr_i2c_device_add(mr_i2c_device_t i2c_device, const char *name, mr_uint32_t address);
```
| 参数 | 描述 |
|:-----------|:---------|
| i2c_device | I2C设备 |
| name | I2C设备名 |
| address | I2C设备地址 |
| **返回** | |
| MR_ERR_OK | 添加设备成功 |
| 错误码 | 添加设备失败 |
| 参数 | 描述 |
|:-----------|:--------|
| i2c_device | I2C设备 |
| name | I2C设备名 |
| address | I2C设备地址 |
| **返回** | |
| MR_ERR_OK | 添加设备成功 |
| 错误码 | 添加设备失败 |
I2C设备地址为未向左移1位的地址。
@@ -39,14 +39,14 @@ I2C设备地址为未向左移1位的地址。
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
```
| 参数 | 描述 |
|:----------|:--------|
| device | I2C设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
| 参数 | 描述 |
|:----------|:-------|
| device | I2C设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
I2C设备支持以下命令
@@ -133,14 +133,14 @@ mr_device_ioctl(i2c1_device, MR_DEVICE_CTRL_CONNECT, MR_NULL);
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
```
| 参数 | 描述 |
|:------------|:-------|
| device | I2C设备 |
| pos | 读取位置 |
| buffer | 读取数据 |
| size | 读取数据大小 |
| **返回** | |
| 实际读取的数据大小 | |
| 参数 | 描述 |
|:----------|:-------|
| device | I2C设备 |
| pos | 读取位置 |
| buffer | 读取数据 |
| size | 读取数据大小 |
| **返回** | |
| 实际读取的数据大小 | |
- 读取位置需要读取的寄存器地址如读取0x23地址数据则pos = 0x23有效范围0-2147483647。地址长度根据设置的pos_bits如不使用时请赋值-1。
@@ -169,14 +169,14 @@ mr_device_read(i2c_device, 0x23, buffer, sizeof(buffer));
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
```
| 参数 | 描述 |
|:------------|:-------|
| device | I2C设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
| 参数 | 描述 |
|:----------|:-------|
| device | I2C设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
- 写入位置需要写入的寄存器地址如写入0x23地址数据则pos = 0x23有效范围0-2147483647。地址长度根据设置的pos_bits如不使用时请赋值-1。

View File

@@ -27,12 +27,12 @@ GPIO通用目的输入/输出)是一种可以通过软件进行控制的硬
mr_device_t mr_device_find(const char *name);
```
| 参数 | 描述 |
|:----------|:----------|
| name | PIN设备名 |
| **返回** | |
| PIN | 查找设备成功 |
| MR_NULL | 查找设备失败 |
| 参数 | 描述 |
|:--------|:-------|
| name | PIN设备名 |
| **返回** | |
| PIN | 查找设备成功 |
| MR_NULL | 查找设备失败 |
----------
@@ -42,13 +42,13 @@ mr_device_t mr_device_find(const char *name);
mr_err_t mr_device_open(mr_device_t device, mr_uint8_t oflags);
```
| 参数 | 描述 |
|:------------|:-------|
| device | PIN设备 |
| oflags | 打开方式 |
| **返回** | |
| MR_ERR_OK | 打开设备成功 |
| 错误码 | 打开设备失败 |
| 参数 | 描述 |
|:----------|:-------|
| device | PIN设备 |
| oflags | 打开方式 |
| **返回** | |
| MR_ERR_OK | 打开设备成功 |
| 错误码 | 打开设备失败 |
PIN设备支持以下打开方式
@@ -66,14 +66,14 @@ MR_DEVICE_OFLAG_RDWR /* 可读可
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
```
| 参数 | 描述 |
|:----------|:--------|
| device | PIN设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
| 参数 | 描述 |
|:----------|:-------|
| device | PIN设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
PIN设备支持以下命令
@@ -177,14 +177,14 @@ mr_device_ioctl(pin_device, MR_DEVICE_CTRL_SET_RX_CB, pin_device_cb);
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
```
| 参数 | 描述 |
|:----------|:--------|
| device | PIN设备 |
| pos | 读取位置 |
| buffer | 读取数据 |
| size | 读取数据大小 |
| **返回** | |
| 实际读取的数据大小 | |
| 参数 | 描述 |
|:----------|:-------|
| device | PIN设备 |
| pos | 读取位置 |
| buffer | 读取数据 |
| size | 读取数据大小 |
| **返回** | |
| 实际读取的数据大小 | |
- 读取位置需要读取的IO编号如读取B13则pos = 29有效范围>=0。
- 读取数据PIN设备IO输入电平类型为int8。
@@ -219,14 +219,14 @@ mr_device_read(pin_device, PIN_NUMBER, &pin_level, sizeof(pin_level));
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
```
| 参数 | 描述 |
|:----------|:--------|
| device | PIN设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
| 参数 | 描述 |
|:----------|:-------|
| device | PIN设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
- 写入位置需要写入的IO编号如读取B13则pos = 29有效范围>=0。
- 写入数据PIN设备IO输出电平类型为int8。

View File

@@ -27,12 +27,12 @@ UARTUniversal Asynchronous Receiver/Transmitter即通用异步收发传输
mr_device_t mr_device_find(const char *name);
```
| 参数 | 描述 |
|:---------|:------------|
| name | SERIAL设备名 |
| **返回** | |
| SERIAL | 查找设备成功 |
| MR_NULL | 查找设备失败 |
| 参数 | 描述 |
|:--------|:----------|
| name | SERIAL设备名 |
| **返回** | |
| SERIAL | 查找设备成功 |
| MR_NULL | 查找设备失败 |
----------
@@ -42,13 +42,13 @@ mr_device_t mr_device_find(const char *name);
mr_err_t mr_device_open(mr_device_t device, mr_uint8_t oflags);
```
| 参数 | 描述 |
|:------------|:-----------|
| device | SERIAL设备 |
| oflags | 打开方式 |
| **返回** | |
| MR_ERR_OK | 打开设备成功 |
| 错误码 | 打开设备失败 |
| 参数 | 描述 |
|:----------|:---------|
| device | SERIAL设备 |
| oflags | 打开方式 |
| **返回** | |
| MR_ERR_OK | 打开设备成功 |
| 错误码 | 打开设备失败 |
SERIAL设备支持以下打开方式
@@ -76,14 +76,14 @@ MR_DEVICE_OFLAG_NONBLOCKING /* 非阻塞
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
```
| 参数 | 描述 |
|:----------|:-----------|
| device | SERIAL设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
| 参数 | 描述 |
|:----------|:---------|
| device | SERIAL设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
SERIAL设备支持以下命令
@@ -226,14 +226,14 @@ mr_device_ioctl(serial_device, MR_DEVICE_CTRL_SET_TX_BUFSZ, &bufsz);
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
```
| 参数 | 描述 |
|:------------|:-------------|
| device | SERIAL设备 |
| pos | 读取位置 |
| buffer | 读取数据 |
| size | 读取数据大小 |
| **返回** | |
| 实际读取的数据大小 | |
| 参数 | 描述 |
|:----------|:---------|
| device | SERIAL设备 |
| pos | 读取位置 |
| buffer | 读取数据 |
| size | 读取数据大小 |
| **返回** | |
| 实际读取的数据大小 | |
使用示例:
@@ -261,14 +261,14 @@ mr_device_read(serial_device, 0, buffer, sizeof(buffer));
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
```
| 参数 | 描述 |
|:----------|:----------|
| device | SERIAL设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
| 参数 | 描述 |
|:----------|:---------|
| device | SERIAL设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
使用示例:

View File

@@ -43,14 +43,14 @@ mr_err_t mr_spi_device_add(mr_spi_device_t spi_device, const char *name, mr_off_
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
```
| 参数 | 描述 |
|:----------|:--------|
| device | SPI设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
| 参数 | 描述 |
|:----------|:-------|
| device | SPI设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
SPI设备支持以下命令
@@ -240,14 +240,14 @@ mr_device_ioctl(spi_device, MR_DEVICE_CTRL_SPI_TRANSFER, &spi_transfer);
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
```
| 参数 | 描述 |
|:------------|:-------|
| device | SPI设备 |
| pos | 读取位置 |
| buffer | 读取数据 |
| size | 读取数据大小 |
| **返回** | |
| 实际读取的数据大小 | |
| 参数 | 描述 |
|:----------|:-------|
| device | SPI设备 |
| pos | 读取位置 |
| buffer | 读取数据 |
| size | 读取数据大小 |
| **返回** | |
| 实际读取的数据大小 | |
- 读取位置需要读取的寄存器地址如读取0x23地址数据则pos = 0x23有效范围0-2147483647。地址长度根据设置的pos_bits如不使用时请赋值-1。
@@ -276,14 +276,14 @@ mr_device_read(spi_device, 0x23, buffer, sizeof(buffer));
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
```
| 参数 | 描述 |
|:------------|:-------|
| device | SPI设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
| 参数 | 描述 |
|:----------|:-------|
| device | SPI设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
- 写入位置需要写入的寄存器地址如写入0x23地址数据则pos = 0x23有效范围0-2147483647。地址长度根据设置的pos_bits如不使用时请赋值-1。

View File

@@ -21,12 +21,12 @@
mr_device_t mr_device_find(const char *name);
```
| 参数 | 描述 |
|:----------|:-------------|
| name | TIMER设备名 |
| **返回** | |
| TIMER | 查找设备成功 |
| MR_NULL | 查找设备失败 |
| 参数 | 描述 |
|:--------|:---------|
| name | TIMER设备名 |
| **返回** | |
| TIMER | 查找设备成功 |
| MR_NULL | 查找设备失败 |
----------
@@ -36,13 +36,13 @@ mr_device_t mr_device_find(const char *name);
mr_err_t mr_device_open(mr_device_t device, mr_uint8_t oflags);
```
| 参数 | 描述 |
|:------------|:-----------|
| device | TIMER设备 |
| oflags | 打开方式 |
| **返回** | |
| MR_ERR_OK | 打开设备成功 |
| 错误码 | 打开设备失败 |
| 参数 | 描述 |
|:----------|:--------|
| device | TIMER设备 |
| oflags | 打开方式 |
| **返回** | |
| MR_ERR_OK | 打开设备成功 |
| 错误码 | 打开设备失败 |
TIMER设备支持以下打开方式
@@ -60,15 +60,14 @@ MR_DEVICE_OFLAG_RDWR /* 可读可
mr_err_t mr_device_ioctl(mr_device_t device, int cmd, void *args);
```
| 参数 | 描述 |
|:----------|:------------|
| device | TIMER设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
| 参数 | 描述 |
|:----------|:--------|
| device | TIMER设备 |
| cmd | 控制命令 |
| args | 控制参数 |
| **返回** | |
| MR_ERR_OK | 控制设备成功 |
| 错误码 | 控制设备失败 |
TIMER设备支持以下命令
@@ -134,14 +133,14 @@ mr_device_ioctl(serial_device, MR_DEVICE_CTRL_SET_RX_CB, timer_device_rx_cb);
mr_ssize_t mr_device_read(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
```
| 参数 | 描述 |
|:------------|:--------------|
| device | TIMER设备 |
| pos | 读取位置 |
| buffer | 读取数据 |
| size | 读取数据大小 |
| **返回** | |
| 实际读取的数据大小 | |
| 参数 | 描述 |
|:----------|:--------|
| device | TIMER设备 |
| pos | 读取位置 |
| buffer | 读取数据 |
| size | 读取数据大小 |
| **返回** | |
| 实际读取的数据大小 | |
- 读取数据TIMER设备已运行时间单位us类型为uint32。
@@ -169,14 +168,14 @@ mr_device_read(serial_device, 0, &buffer, sizeof(buffer));
mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer, mr_size_t size);
```
| 参数 | 描述 |
|:----------|:-----------|
| device | TIMER设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
| 参数 | 描述 |
|:----------|:--------|
| device | TIMER设备 |
| pos | 写入位置 |
| buffer | 写入数据 |
| size | 写入数据大小 |
| **返回** | |
| 实际写入的数据大小 | |
- 写入数据TIMER设备定时时间单位us定时范围1us-4294.967295s,类型为uint32。写入多个数据时将取最后一个有效数据。

View File

@@ -8,17 +8,17 @@
代码包含以下文件:
| 名称 | 描述 |
|:-----------|:--------|
| mr_library | |
| -bsp | 板级支持包 |
| -device | 设备文件 |
| -document | 文档 |
| -driver | 驱动文件 |
| -include | 库头文件 |
| -module | 组件 |
| -package | 软件包 |
| -src | 库源文件 |
| 名称 | 描述 |
|:-----------|:------|
| mr_library | |
| -bsp | 板级支持包 |
| -device | 设备文件 |
| -document | 文档 |
| -driver | 驱动文件 |
| -include | 库头文件 |
| -module | 组件 |
| -package | 软件包 |
| -src | 库源文件 |
选择需要的文件:

View File

@@ -74,4 +74,4 @@ mr_err_t drv_adc_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_adc_init);
#endif
#endif

View File

@@ -71,4 +71,4 @@ mr_err_t drv_dac_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_dac_init);
#endif
#endif

View File

@@ -62,4 +62,4 @@ mr_err_t drv_gpio_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_gpio_init);
#endif
#endif

View File

@@ -86,4 +86,4 @@ mr_err_t drv_soft_i2c_bus_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_soft_i2c_bus_init);
#endif
#endif

View File

@@ -69,7 +69,7 @@ mr_err_t drv_pwm_init(void)
{
ret = mr_pwm_device_add(&pwm_device[count],
drv_pwm_data[count].name,
&drv_ops,&drv_pwm_data[count]
&drv_ops, &drv_pwm_data[count]
);
MR_ASSERT(ret == MR_ERR_OK);
}
@@ -78,4 +78,4 @@ mr_err_t drv_pwm_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_pwm_init);
#endif
#endif

View File

@@ -95,4 +95,4 @@ mr_err_t drv_spi_bus_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_spi_bus_init);
#endif
#endif

View File

@@ -89,4 +89,4 @@ mr_err_t drv_timer_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_timer_init);
#endif
#endif

View File

@@ -91,4 +91,4 @@ mr_err_t drv_uart_init(void)
}
MR_INIT_DRIVER_EXPORT(drv_uart_init);
#endif
#endif

View File

@@ -28,4 +28,4 @@ struct drv_uart_data
#endif
#endif /* _DRV_UART_H_ */
#endif /* _DRV_UART_H_ */

View File

@@ -42,4 +42,4 @@ void mr_delay_us(mr_size_t us)
void mr_delay_ms(mr_size_t ms)
{
}
}

View File

@@ -80,4 +80,4 @@ extern "C" {
}
#endif
#endif /* _MR_BOARD_H_ */
#endif /* _MR_BOARD_H_ */

View File

@@ -45,4 +45,4 @@
#include "drv_timer.h"
#endif
#endif /* _MR_DRV_H_ */
#endif /* _MR_DRV_H_ */

View File

@@ -130,4 +130,4 @@ mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer,
}
#endif
#endif /* _MR_API_H_ */
#endif /* _MR_API_H_ */

View File

@@ -107,6 +107,19 @@ extern "C" {
#endif
/**
* @def Message config.
*
* MR_CFG_DISABLE: Disable msg.
* MR_CFG_ENABLE: Enable msg.
*/
#define MR_CFG_MSG MR_CFG_ENABLE
#if (MR_CFG_MSG == MR_CFG_ENABLE)
#define MR_CFG_MSG_RX_BUFSZ 32
#endif
/**
* @def Pin config.
*
@@ -180,4 +193,4 @@ extern "C" {
}
#endif
#endif /* _MR_CONFIG_H_ */
#endif /* _MR_CONFIG_H_ */

View File

@@ -427,4 +427,4 @@ typedef struct mr_device_channel *mr_device_channel_t; /* Type for
}
#endif
#endif /* _MR_DEF_H_ */
#endif /* _MR_DEF_H_ */

View File

@@ -17,4 +17,4 @@
#include "mrdrv.h"
#endif
#endif /* _MR_LIB_H_ */
#endif /* _MR_LIB_H_ */

View File

@@ -335,4 +335,4 @@ MR_INLINE mr_bool_t mr_list_is_empty(mr_list_t list)
}
#endif
#endif /* _MR_SERVICE_H_ */
#endif /* _MR_SERVICE_H_ */

View File

@@ -72,12 +72,12 @@ mr_err_t mr_eloop_add(mr_eloop_t eloop, const char *name, mr_size_t queue_size);
mr_err_t mr_eloop_remove(mr_eloop_t eloop);
```
| 参数 | 描述 |
|:-----------|:-------|
| eloop | 事件循环 |
| **返回** | |
| MR_ERR_OK | 移除成功 |
| 错误码 | 移除失败 |
| 参数 | 描述 |
|:----------|:-----|
| eloop | 事件循环 |
| **返回** | |
| MR_ERR_OK | 移除成功 |
| 错误码 | 移除失败 |
----------
@@ -87,9 +87,9 @@ mr_err_t mr_eloop_remove(mr_eloop_t eloop);
void mr_eloop_handle(mr_eloop_t eloop);
```
| 参数 | 描述 |
|:-----------|:-------|
| eloop | 事件循环 |
| 参数 | 描述 |
|:------|:-----|
| eloop | 事件循环 |
按事件发生顺序处理FIFO仅会处理进入处理函数前已发生的事件防止单一事件循环触发阻塞系统。
@@ -101,15 +101,15 @@ void mr_eloop_handle(mr_eloop_t eloop);
mr_err_t mr_eloop_create_event(mr_eloop_t eloop, mr_uint32_t id, mr_err_t (*cb)(mr_eloop_t ep, void *args), void *args);
```
| 参数 | 描述 |
|:-------------|:---------|
| eloop | 事件循环 |
| id | 事件ID |
| cb | 事件回调函数 |
| args | 回调函数参数 |
| **返回** | |
| MR_ERR_OK | 创建成功 |
| 错误码 | 创建失败 |
| 参数 | 描述 |
|:----------|:-------|
| eloop | 事件循环 |
| id | 事件ID |
| cb | 事件回调函数 |
| args | 回调函数参数 |
| **返回** | |
| MR_ERR_OK | 创建成功 |
| 错误码 | 创建失败 |
当与RTOS线程组合使用时可实现真正意义上的高效并发并且可根据线程优先级控制事件的响应速度。
但是也会引入新的问题,当事件回调中使用任何能使线程挂起的功能时,可能会导致其余所有事件无法响应(等同于所有事件被挂起等待),因此事件处理函数中不因使用类似功能(事件回调应能直接处理无需等待)。
@@ -124,13 +124,13 @@ mr_err_t mr_eloop_create_event(mr_eloop_t eloop, mr_uint32_t id, mr_err_t (*cb)(
mr_err_t mr_eloop_delete_event(mr_eloop_t eloop, mr_uint32_t id);
```
| 参数 | 描述 |
|:-------------|:---------|
| eloop | 事件循环 |
| id | 事件ID |
| **返回** | |
| MR_ERR_OK | 删除成功 |
| 错误码 | 删除失败 |
| 参数 | 描述 |
|:----------|:-----|
| eloop | 事件循环 |
| id | 事件ID |
| **返回** | |
| MR_ERR_OK | 删除成功 |
| 错误码 | 删除失败 |
----------
@@ -140,13 +140,13 @@ mr_err_t mr_eloop_delete_event(mr_eloop_t eloop, mr_uint32_t id);
mr_err_t mr_eloop_notify_event(mr_eloop_t eloop, mr_uint32_t id);
```
| 参数 | 描述 |
|:-------------|:---------|
| eloop | 事件循环 |
| id | 事件ID |
| **返回** | |
| MR_ERR_OK | 通知成功 |
| 错误码 | 通知失败 |
| 参数 | 描述 |
|:----------|:-----|
| eloop | 事件循环 |
| id | 事件ID |
| **返回** | |
| MR_ERR_OK | 通知成功 |
| 错误码 | 通知失败 |
通知事件为异步操作,实际处理将在事件处理中进行。
当通知事件发生失败(错误码 -5请增加缓冲队列大小或提高事件处理频率缓冲队列已满无法及时响应事件导致事件丢失
@@ -159,13 +159,13 @@ mr_err_t mr_eloop_notify_event(mr_eloop_t eloop, mr_uint32_t id);
mr_err_t mr_eloop_trigger_event(mr_eloop_t eloop, mr_uint32_t id);
```
| 参数 | 描述 |
|:-------------|:---------|
| eloop | 事件循环 |
| id | 事件ID |
| **返回** | |
| MR_ERR_OK | 触发成功 |
| 错误码 | 触发失败 |
| 参数 | 描述 |
|:----------|:-----|
| eloop | 事件循环 |
| id | 事件ID |
| **返回** | |
| MR_ERR_OK | 触发成功 |
| 错误码 | 触发失败 |
此操作为同步操作,实际处理将在触发处立即执行。

View File

@@ -308,4 +308,4 @@ mr_uint32_t mr_eloop_string_to_id(const char *string, mr_size_t size)
return id;
}
#endif
#endif

View File

@@ -309,4 +309,4 @@ mr_err_t mr_eloop_sp_trigger_event(mr_eloop_sp_t eloop, mr_uint8_t id)
return MR_ERR_OK;
}
#endif
#endif

View File

@@ -68,12 +68,12 @@ mr_err_t mr_etask_add(mr_etask_t etask, const char *name, mr_size_t size);
mr_err_t mr_etask_remove(mr_etask_t etask);
```
| 参数 | 描述 |
|:-----------|:-------|
| etask | 事件任务 |
| **返回** | |
| MR_ERR_OK | 移除成功 |
| 错误码 | 移除失败 |
| 参数 | 描述 |
|:----------|:-----|
| etask | 事件任务 |
| **返回** | |
| MR_ERR_OK | 移除成功 |
| 错误码 | 移除失败 |
----------
@@ -83,9 +83,9 @@ mr_err_t mr_etask_remove(mr_etask_t etask);
void mr_etask_tick_update(mr_etask_t etask);
```
| 参数 | 描述 |
|:-----------|:-------|
| etask | 事件任务 |
| 参数 | 描述 |
|:------|:-----|
| etask | 事件任务 |
----------
@@ -95,9 +95,9 @@ void mr_etask_tick_update(mr_etask_t etask);
void mr_etask_handle(mr_etask_t etask);
```
| 参数 | 描述 |
|:-----------|:-------|
| etask | 事件任务 |
| 参数 | 描述 |
|:------|:-----|
| etask | 事件任务 |
按事件发生顺序处理FIFO仅会处理进入处理函数前已发生的事件防止单一事件循环触发阻塞系统。
@@ -129,7 +129,7 @@ mr_err_t mr_etask_start(mr_etask_t etask,
| 错误码 | 启动失败 |
- sflags: 事件分为普通事件与定时事件。定时事件可分为单次/周期和软件/硬件,单次定时事件在发生完成后将释放自身,周期定时事件在发生完成后将自动重启直至用户停止该事件。
软件定时事件在超时发生时将事件加入事件队列中等待处理,而硬件定时器将在任务时钟更新处直接处理。
软件定时事件在超时发生时将事件加入事件队列中等待处理,而硬件定时器将在任务时钟更新处直接处理。
```c
MR_ETASK_SFLAG_EVENT /* 普通事件 */
@@ -152,13 +152,13 @@ MR_ETASK_SFLAG_TIMER | MR_ETASK_SFLAG_ONESHOT | MR_ETASK_SFLAG_HARD /* 定时事
mr_err_t mr_etask_stop(mr_etask_t etask, mr_uint32_t id);
```
| 参数 | 描述 |
|:-------------|:-----|
| etask | 事件任务 |
| id | 事件ID |
| **返回** | |
| MR_ERR_OK | 停止成功 |
| 错误码 | 停止失败 |
| 参数 | 描述 |
|:----------|:-----|
| etask | 事件任务 |
| id | 事件ID |
| **返回** | |
| MR_ERR_OK | 停止成功 |
| 错误码 | 停止失败 |
----------
@@ -197,11 +197,11 @@ MR_ETASK_WFLAG_STATE /* 状态唤
mr_uint32_t mr_etask_str2id(const char *string);
```
| 参数 | 描述 |
|:-------|:------|
| string | 字符串 |
| **返回** | |
| 事件ID | |
| 参数 | 描述 |
|:-------|:----|
| string | 字符串 |
| **返回** | |
| 事件ID | |
当事件数量过多且字符串内容相近时可能会出现哈希碰撞。

View File

@@ -466,4 +466,4 @@ mr_uint32_t mr_etask_str2id(const char *string)
return id;
}
#endif
#endif

View File

@@ -75,4 +75,4 @@ mr_uint32_t mr_etask_str2id(const char *string);
}
#endif
#endif /* _ETASK_H_ */
#endif /* _ETASK_H_ */

View File

@@ -28,12 +28,12 @@ ICM20602是一款低功耗六轴MEMS运动跟踪设备,集成了三轴陀螺仪
mr_icm20602_t mr_icm20602_find(const char *name);
```
| 参数 | 描述 |
|:------------|:----------|
| name | ICM20602名 |
| **返回** | |
| ICM20602 | 查找成功 |
| MR_NULL | 查找失败 |
| 参数 | 描述 |
|:---------|:----------|
| name | ICM20602名 |
| **返回** | |
| ICM20602 | 查找成功 |
| MR_NULL | 查找失败 |
----------

View File

@@ -260,4 +260,4 @@ struct mr_icm20602_3_axis mr_icm20602_read_gyro_3_axis(mr_icm20602_t icm20602)
return axis;
}
#endif
#endif

View File

@@ -95,4 +95,4 @@ struct mr_icm20602_3_axis mr_icm20602_read_gyro_3_axis(mr_icm20602_t icm20602);
}
#endif
#endif /* _ICM20602_H_ */
#endif /* _ICM20602_H_ */

View File

@@ -312,4 +312,4 @@ mr_ssize_t mr_device_write(mr_device_t device, mr_off_t pos, const void *buffer,
return ret;
}
#endif
#endif

View File

@@ -17,8 +17,6 @@ static struct mr_object_container mr_object_container_table[] =
{Mr_Object_Type_Module, MR_OBJECT_MAGIC, {&mr_object_container_table[Mr_Object_Type_Module].list, &mr_object_container_table[Mr_Object_Type_Module].list}},
};
static mr_size_t mr_allocated_memory_size = 0;
/**
* @brief This function find the object container.
*
@@ -273,7 +271,7 @@ mr_err_t mr_mutex_take(mr_mutex_t mutex, void *acquirer)
return MR_ERR_OK;
}
if(mutex->owner == acquirer)
if (mutex->owner == acquirer)
{
mutex->hold++;
@@ -369,4 +367,4 @@ MR_WEAK void mr_free(void *memory)
{
free(memory);
}
}
}

View File

@@ -837,4 +837,4 @@ mr_size_t mr_avl_get_length(mr_avl_t tree)
}
return length;
}
}