1.优化代码。

This commit is contained in:
MacRsh
2023-11-14 21:01:22 +08:00
parent 651bb341f8
commit 8e9b9fed42
3 changed files with 28 additions and 28 deletions

View File

@@ -11,7 +11,7 @@
#ifdef MR_USING_SPI
#if !defined(MR_USING_SPI1) && !defined(MR_USING_SPI2) && !defined(MR_USING_SPI3)
#error "Please define at least one SPI macro like MR_USING_SPI1. Otherwise undefine MR_USING_GPIO."
#error "Please define at least one SPI macro like MR_USING_SPI1. Otherwise undefine MR_USING_SPI."
#endif
enum drv_spi_bus_index
@@ -350,22 +350,6 @@ static int drv_spi_bus_configure(struct mr_spi_bus *spi_bus, struct mr_spi_confi
return MR_EOK;
}
static void drv_spi_bus_write(struct mr_spi_bus *spi_bus, uint32_t data)
{
struct drv_spi_bus_data *spi_bus_data = (struct drv_spi_bus_data *)spi_bus->dev.drv->data;
int i = 0;
while (SPI_I2S_GetFlagStatus(spi_bus_data->instance, SPI_I2S_FLAG_TXE) == RESET)
{
i++;
if (i > UINT16_MAX)
{
return;
}
}
SPI_I2S_SendData(spi_bus_data->instance, data);
}
static uint32_t drv_spi_bus_read(struct mr_spi_bus *spi_bus)
{
struct drv_spi_bus_data *spi_bus_data = (struct drv_spi_bus_data *)spi_bus->dev.drv->data;
@@ -382,6 +366,22 @@ static uint32_t drv_spi_bus_read(struct mr_spi_bus *spi_bus)
return SPI_I2S_ReceiveData(spi_bus_data->instance);
}
static void drv_spi_bus_write(struct mr_spi_bus *spi_bus, uint32_t data)
{
struct drv_spi_bus_data *spi_bus_data = (struct drv_spi_bus_data *)spi_bus->dev.drv->data;
int i = 0;
SPI_I2S_SendData(spi_bus_data->instance, data);
while (SPI_I2S_GetFlagStatus(spi_bus_data->instance, SPI_I2S_FLAG_TXE) == RESET)
{
i++;
if (i > UINT16_MAX)
{
return;
}
}
}
static void drv_spi_bus_isr(struct mr_spi_bus *spi_bus)
{
struct drv_spi_bus_data *spi_bus_data = (struct drv_spi_bus_data *)spi_bus->dev.drv->data;
@@ -394,7 +394,7 @@ static void drv_spi_bus_isr(struct mr_spi_bus *spi_bus)
}
#ifdef MR_USING_SPI1
void SPI1_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void SPI1_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void SPI1_IRQHandler(void)
{
drv_spi_bus_isr(&spi_bus_dev[DRV_INDEX_SPI1]);
@@ -402,7 +402,7 @@ void SPI1_IRQHandler(void)
#endif /* MR_USING_SPI1 */
#ifdef MR_USING_SPI2
void SPI2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void SPI2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void SPI2_IRQHandler(void)
{
drv_spi_bus_isr(&spi_bus_dev[DRV_INDEX_SPI2]);
@@ -410,7 +410,7 @@ void SPI2_IRQHandler(void)
#endif /* MR_USING_SPI2 */
#ifdef MR_USING_SPI3
void SPI3_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void SPI3_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void SPI3_IRQHandler(void)
{
drv_spi_bus_isr(&spi_bus_dev[DRV_INDEX_SPI3]);
@@ -420,8 +420,8 @@ void SPI3_IRQHandler(void)
static struct mr_spi_bus_ops spi_bus_drv_ops =
{
drv_spi_bus_configure,
drv_spi_bus_write,
drv_spi_bus_read,
drv_spi_bus_write,
};
static struct mr_drv spi_bus_drv[mr_array_num(spi_bus_drv_data)] =

View File

@@ -596,10 +596,10 @@ static ssize_t drv_uart_read(struct mr_uart *uart, uint8_t *buf, size_t size)
i++;
if (i > UINT16_MAX)
{
break;
return rd_size;
}
}
buf[rd_size] = uart_data->instance->DATAR & 0xff;
buf[rd_size] = USART_ReceiveData(uart_data->instance);
}
return rd_size;
}
@@ -614,15 +614,15 @@ static ssize_t drv_uart_write(struct mr_uart *uart, const uint8_t *buf, size_t s
int i = 0;
/* Write data */
USART_SendData(uart_data->instance, buf[wr_size]);
while (USART_GetFlagStatus(uart_data->instance, USART_FLAG_TC) == RESET)
{
i++;
if (i > UINT16_MAX)
{
break;
return wr_size;
}
}
uart_data->instance->DATAR = buf[wr_size];
}
return wr_size;
}
@@ -631,7 +631,7 @@ static void drv_uart_start_tx(struct mr_uart *uart)
{
struct drv_uart_data *uart_data = (struct drv_uart_data *)uart->dev.drv->data;
/* Enable TXE */
/* Enable TX interrupt */
USART_ITConfig(uart_data->instance, USART_IT_TXE, ENABLE);
}
@@ -639,7 +639,7 @@ static void drv_uart_stop_tx(struct mr_uart *uart)
{
struct drv_uart_data *uart_data = (struct drv_uart_data *)uart->dev.drv->data;
/* Disable TXE */
/* Disable TX interrupt */
USART_ITConfig(uart_data->instance, USART_IT_TXE, DISABLE);
}

View File

@@ -110,8 +110,8 @@ struct mr_spi_bus
struct mr_spi_bus_ops
{
int (*configure)(struct mr_spi_bus *spi_bus, struct mr_spi_config *config);
void (*write)(struct mr_spi_bus *spi_bus, uint32_t data);
uint32_t (*read)(struct mr_spi_bus *spi_bus);
void (*write)(struct mr_spi_bus *spi_bus, uint32_t data);
};
/**