1.代码优化。

This commit is contained in:
MacRsh
2023-12-31 16:32:01 +08:00
parent f2b55fd7b1
commit d6292586ec
14 changed files with 31 additions and 35 deletions

View File

@@ -64,11 +64,11 @@ static int mr_adc_close(struct mr_dev *dev)
struct mr_adc_ops *ops = (struct mr_adc_ops *)dev->drv->ops;
/* Disable all channels */
for (int i = 0; i < 32; i++)
for (size_t i = 0; i < 32; i++)
{
if (MR_BIT_IS_SET(adc->channel, (1 << i)) == MR_ENABLE)
{
ops->channel_configure(adc, i, MR_DISABLE);
ops->channel_configure(adc, (int)i, MR_DISABLE);
MR_BIT_CLR(adc->channel, (1 << i));
}
}
@@ -81,7 +81,7 @@ static ssize_t mr_adc_read(struct mr_dev *dev, int off, void *buf, size_t size,
struct mr_adc *adc = (struct mr_adc *)dev;
struct mr_adc_ops *ops = (struct mr_adc_ops *)dev->drv->ops;
uint32_t *rd_buf = (uint32_t *)buf;
ssize_t rd_size = 0;
ssize_t rd_size;
/* Check if the channel is enabled */
if (MR_BIT_IS_SET(adc->channel, (1 << off)) == MR_DISABLE)

View File

@@ -64,11 +64,11 @@ static int mr_dac_close(struct mr_dev *dev)
struct mr_dac_ops *ops = (struct mr_dac_ops *)dev->drv->ops;
/* Disable all channels */
for (int i = 0; i < 32; i++)
for (size_t i = 0; i < 32; i++)
{
if (MR_BIT_IS_SET(dac->channel, (1 << i)) == MR_ENABLE)
{
ops->channel_configure(dac, i, MR_DISABLE);
ops->channel_configure(dac, (int)i, MR_DISABLE);
MR_BIT_CLR(dac->channel, (1 << i));
}
}
@@ -81,7 +81,7 @@ static ssize_t mr_dac_write(struct mr_dev *dev, int off, const void *buf, size_t
struct mr_dac *dac = (struct mr_dac *)dev;
struct mr_dac_ops *ops = (struct mr_dac_ops *)dev->drv->ops;
uint32_t *wr_buf = (uint32_t *)buf;
ssize_t wr_size = 0;
ssize_t wr_size;
/* Check if the channel is enabled */
if (MR_BIT_IS_SET(dac->channel, (1 << off)) == MR_DISABLE)

View File

@@ -194,7 +194,7 @@ MR_INLINE ssize_t i2c_dev_read(struct mr_i2c_dev *i2c_dev, uint8_t *buf, size_t
struct mr_i2c_bus *i2c_bus = (struct mr_i2c_bus *)i2c_dev->dev.parent;
struct mr_i2c_bus_ops *ops = (struct mr_i2c_bus_ops *)i2c_bus->dev.drv->ops;
uint8_t *rd_buf = (uint8_t *)buf;
ssize_t rd_size = 0;
ssize_t rd_size;
for (rd_size = 0; rd_size < size; rd_size += sizeof(*rd_buf))
{
@@ -209,7 +209,7 @@ MR_INLINE ssize_t i2c_dev_write(struct mr_i2c_dev *i2c_dev, const uint8_t *buf,
struct mr_i2c_bus *i2c_bus = (struct mr_i2c_bus *)i2c_dev->dev.parent;
struct mr_i2c_bus_ops *ops = (struct mr_i2c_bus_ops *)i2c_bus->dev.drv->ops;
uint8_t *wr_buf = (uint8_t *)buf;
ssize_t wr_size = 0;
ssize_t wr_size;
for (wr_size = 0; wr_size < size; wr_size += sizeof(*wr_buf))
{

View File

@@ -96,7 +96,7 @@ static ssize_t mr_pin_read(struct mr_dev *dev, int off, void *buf, size_t size,
struct mr_pin *pin = (struct mr_pin *)dev;
struct mr_pin_ops *ops = (struct mr_pin_ops *)dev->drv->ops;
uint8_t *rd_buf = (uint8_t *)buf;
ssize_t rd_size = 0;
ssize_t rd_size;
/* Check offset is valid */
if (off < 0)
@@ -117,7 +117,7 @@ static ssize_t mr_pin_write(struct mr_dev *dev, int off, const void *buf, size_t
struct mr_pin *pin = (struct mr_pin *)dev;
struct mr_pin_ops *ops = (struct mr_pin_ops *)dev->drv->ops;
uint8_t *wr_buf = (uint8_t *)buf;
ssize_t wr_size = 0;
ssize_t wr_size;
/* Check offset is valid */
if (off < 0)
@@ -168,8 +168,7 @@ static ssize_t mr_pin_isr(struct mr_dev *dev, int event, void *args)
ssize_t number = *(int *)args;
/* If the irq exists, call it */
struct mr_list *list = MR_NULL;
for (list = pin->irq_list.next; list != &pin->irq_list; list = list->next)
for (struct mr_list *list = pin->irq_list.next; list != &pin->irq_list; list = list->next)
{
struct pin_irq *irq = (struct pin_irq *)MR_CONTAINER_OF(list, struct pin_irq, list);
if (irq->number == number)

View File

@@ -100,8 +100,7 @@ static int pwm_calculate(struct mr_pwm *pwm, uint32_t freq)
}
/* Optimize the prescaler and period */
uint32_t divisor = 0;
for (divisor = 9; divisor > 1; divisor--)
for (uint32_t divisor = 9; divisor > 1; divisor--)
{
/* Check if reload value can be divided by current divisor */
while ((psc_best % divisor) == 0)
@@ -152,11 +151,11 @@ static int mr_pwm_close(struct mr_dev *dev)
struct mr_pwm_ops *ops = (struct mr_pwm_ops *)dev->drv->ops;
/* Disable all channels */
for (int i = 0; i < 32; i++)
for (size_t i = 0; i < 32; i++)
{
if (MR_BIT_IS_SET(pwm->channel, (1 << i)) == MR_ENABLE)
{
ops->channel_configure(pwm, i, MR_DISABLE, MR_PWM_POLARITY_NORMAL);
ops->channel_configure(pwm, (int)i, MR_DISABLE, MR_PWM_POLARITY_NORMAL);
MR_BIT_CLR(pwm->channel, (1 << i));
}
}
@@ -169,7 +168,7 @@ static ssize_t mr_pwm_read(struct mr_dev *dev, int off, void *buf, size_t size,
struct mr_pwm *pwm = (struct mr_pwm *)dev;
struct mr_pwm_ops *ops = (struct mr_pwm_ops *)dev->drv->ops;
uint32_t *rd_buf = (uint32_t *)buf;
ssize_t rd_size = 0;
ssize_t rd_size;
/* Check if the channel is enabled */
if (MR_BIT_IS_SET(pwm->channel, (1 << off)) == MR_DISABLE)
@@ -191,7 +190,7 @@ static ssize_t mr_pwm_write(struct mr_dev *dev, int off, const void *buf, size_t
struct mr_pwm *pwm = (struct mr_pwm *)dev;
struct mr_pwm_ops *ops = (struct mr_pwm_ops *)dev->drv->ops;
uint32_t *wr_buf = (uint32_t *)buf;
ssize_t wr_size = 0;
ssize_t wr_size;
/* Check if the channel is enabled */
if (MR_BIT_IS_SET(pwm->channel, (1 << off)) == MR_DISABLE)

View File

@@ -46,7 +46,7 @@ static ssize_t mr_serial_read(struct mr_dev *dev, int off, void *buf, size_t siz
struct mr_serial *serial = (struct mr_serial *)dev;
struct mr_serial_ops *ops = (struct mr_serial_ops *)dev->drv->ops;
uint8_t *rd_buf = (uint8_t *)buf;
ssize_t rd_size = 0;
ssize_t rd_size;
if (mr_ringbuf_get_bufsz(&serial->rd_fifo) == 0)
{
@@ -67,7 +67,7 @@ static ssize_t mr_serial_write(struct mr_dev *dev, int off, const void *buf, siz
struct mr_serial *serial = (struct mr_serial *)dev;
struct mr_serial_ops *ops = (struct mr_serial_ops *)dev->drv->ops;
uint8_t *wr_buf = (uint8_t *)buf;
ssize_t wr_size = 0;
ssize_t wr_size;
if ((async == MR_SYNC) || (mr_ringbuf_get_bufsz(&serial->wr_fifo) == 0))
{
@@ -231,7 +231,7 @@ static ssize_t mr_serial_isr(struct mr_dev *dev, int event, void *args)
case MR_ISR_SERIAL_WR_INT:
{
/* Write data from FIFO, if FIFO is empty, stop transmit */
uint8_t data = 0;
uint8_t data;
if (mr_ringbuf_pop(&serial->wr_fifo, &data) == sizeof(data))
{
ops->write(serial, data);

View File

@@ -33,7 +33,7 @@ MR_INLINE void soft_i2c_bus_sda_set(struct mr_soft_i2c_bus *soft_i2c_bus, uint8_
MR_INLINE uint8_t soft_i2c_sda_get(struct mr_soft_i2c_bus *soft_i2c_bus)
{
uint8_t value = 0;
uint8_t value;
mr_dev_ioctl(soft_i2c_bus->desc, MR_CTL_PIN_SET_NUMBER, &soft_i2c_bus->sda_pin);
mr_dev_read(soft_i2c_bus->desc, &value, sizeof(value));

View File

@@ -263,7 +263,7 @@ static ssize_t spi_dev_transfer(struct mr_spi_dev *spi_dev, void *rd_buf, const
{
struct mr_spi_bus *spi_bus = (struct mr_spi_bus *)spi_dev->dev.parent;
struct mr_spi_bus_ops *ops = (struct mr_spi_bus_ops *)spi_bus->dev.drv->ops;
size_t tf_size = 0;
size_t tf_size;
if (rdwr == MR_SPI_RD)
{

View File

@@ -14,7 +14,7 @@ static int timer_calculate(struct mr_timer *timer, uint32_t timeout)
{
uint32_t clk = timer->info->clk, psc_max = timer->info->prescaler_max, per_max = timer->info->period_max;
uint32_t psc_best = 0, per_best = 0, reload_best = 0;
uint32_t psc = 0;
uint32_t psc;
int error_min = INT32_MAX;
/* Check the clock */
@@ -127,7 +127,7 @@ static ssize_t mr_timer_read(struct mr_dev *dev, int off, void *buf, size_t size
struct mr_timer *timer = (struct mr_timer *)dev;
struct mr_timer_ops *ops = (struct mr_timer_ops *)dev->drv->ops;
uint32_t *rd_buf = (uint32_t *)buf;
ssize_t rd_size = 0;
ssize_t rd_size;
MR_BIT_CLR(size, sizeof(*rd_buf) - 1);
for (rd_size = 0; rd_size < size; rd_size += sizeof(*rd_buf))
@@ -148,7 +148,7 @@ static ssize_t mr_timer_write(struct mr_dev *dev, int off, const void *buf, size
struct mr_timer_ops *ops = (struct mr_timer_ops *)dev->drv->ops;
uint32_t *wr_buf = (uint32_t *)buf;
uint32_t timeout = 0;
ssize_t wr_size = 0;
ssize_t wr_size;
/* Only the last write is valid */
MR_BIT_CLR(size, sizeof(*wr_buf) - 1);

View File

@@ -89,7 +89,7 @@ SERIAL设备配置
- `stop_bits`:停止位数。
- `parity`:校验位。
- `bit_order`:数据传输顺序。
- `invert`:极性反转。
- `polarity`:极性反转。
```c
/* 设置默认配置 */

View File

@@ -91,7 +91,7 @@ SERIAL device configuration:
- `stop_bits`: Stop bits
- `parity`: Parity check
- `bit_order`: Data transmission order
- `invert`: Polarity inversion
- `polarity`: Polarity inversion
```c
/* Set default configuration */

View File

@@ -66,7 +66,7 @@ typedef int (*mr_init_fn_t)(void);
* @brief Exports an auto initialization function with level.
*/
#define MR_INIT_EXPORT(fn, level) \
MR_USED const mr_init_fn_t _mr_auto_init_##fn MR_SECTION(".auto_init."level) = fn
MR_USED const mr_init_fn_t _mr_auto_init_##fn MR_SECTION(".mr_auto_init."level) = fn
/**
* @brief Exports a board auto initialization function.

View File

@@ -103,7 +103,7 @@ extern "C" {
*
* @return The number of elements in the array.
*/
#define MR_ARRAY_SIZE(array) (sizeof(array)/sizeof((array)[0]))
#define MR_ARRAY_NUM(array) (sizeof(array)/sizeof((array)[0]))
/**
* @brief This macro function gets the maximum of two values.

View File

@@ -74,13 +74,12 @@ MR_INLINE const char *dev_clear_path(const char *path)
MR_INLINE int dev_register_by_path(struct mr_dev *parent, struct mr_dev *dev, const char *path)
{
char child_name[MR_CFG_NAME_MAX + 1] = {0};
const char *child_path = MR_NULL;
/* Clear the path */
path = dev_clear_path(path);
/* Check whether the child path exists */
child_path = strchr(path, '/');
const char *child_path = strchr(path, '/');
if (child_path != MR_NULL)
{
/* Get the child name */
@@ -107,13 +106,12 @@ MR_INLINE int dev_register_by_path(struct mr_dev *parent, struct mr_dev *dev, co
MR_INLINE struct mr_dev *dev_find_by_path(struct mr_dev *parent, const char *path)
{
char child_name[MR_CFG_NAME_MAX + 1] = {0};
const char *child_path = MR_NULL;
/* Clear the path */
path = dev_clear_path(path);
/* Check whether the child path exists */
child_path = strchr(path, '/');
const char *child_path = strchr(path, '/');
if (child_path != MR_NULL)
{
/* Get the child name */
@@ -421,7 +419,7 @@ int mr_dev_register(struct mr_dev *dev,
struct mr_dev_ops *ops,
struct mr_drv *drv)
{
static struct mr_dev_ops null_ops = {0};
static struct mr_dev_ops null_ops = {MR_NULL};
MR_ASSERT(dev != MR_NULL);
MR_ASSERT(dev->magic != MR_MAGIC_NUMBER);