1.修复pin驱动错误。
This commit is contained in:
@@ -211,8 +211,8 @@ menu "Board configure"
|
||||
endmenu
|
||||
|
||||
config MR_USING_SPI3
|
||||
bool "Enable SPI3 driver"
|
||||
default n
|
||||
bool "Enable SPI3 driver"
|
||||
default n
|
||||
|
||||
menu "SPI3 driver configure"
|
||||
depends on MR_USING_SPI3
|
||||
|
||||
@@ -146,7 +146,7 @@ static uint32_t drv_adc_read(struct mr_adc *adc, int channel)
|
||||
while (ADC_GetFlagStatus(adc_data->instance, ADC_FLAG_EOC) == RESET)
|
||||
{
|
||||
i++;
|
||||
if (i > UINT16_MAX)
|
||||
if (i > INT16_MAX)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "drv_i2c.h"
|
||||
|
||||
#ifdef MR_USING_I2C
|
||||
|
||||
#define MR_USING_I2C1
|
||||
#if !defined(MR_USING_I2C1) && !defined(MR_USING_I2C2)
|
||||
#error "Please define at least one I2C macro like MR_USING_I2C1. Otherwise undefine MR_USING_I2C."
|
||||
#else
|
||||
@@ -187,7 +187,7 @@ static void drv_i2c_bus_start(struct mr_i2c_bus *i2c_bus)
|
||||
while (I2C_CheckEvent(i2c_bus_data->instance, I2C_EVENT_MASTER_MODE_SELECT) == RESET)
|
||||
{
|
||||
i++;
|
||||
if (i > UINT16_MAX)
|
||||
if (i > INT16_MAX)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -203,7 +203,7 @@ static void drv_i2c_bus_send_addr(struct mr_i2c_bus *i2c_bus, int addr, int addr
|
||||
while (I2C_CheckEvent(i2c_bus_data->instance, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) == RESET)
|
||||
{
|
||||
i++;
|
||||
if (i > UINT16_MAX)
|
||||
if (i > INT16_MAX)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -216,7 +216,7 @@ static void drv_i2c_bus_send_addr(struct mr_i2c_bus *i2c_bus, int addr, int addr
|
||||
while (I2C_CheckEvent(i2c_bus_data->instance, I2C_EVENT_MASTER_BYTE_TRANSMITTED) == RESET)
|
||||
{
|
||||
i++;
|
||||
if (i > UINT16_MAX)
|
||||
if (i > INT16_MAX)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -231,50 +231,38 @@ static void drv_i2c_bus_stop(struct mr_i2c_bus *i2c_bus)
|
||||
I2C_GenerateSTOP(i2c_bus_data->instance, ENABLE);
|
||||
}
|
||||
|
||||
static ssize_t drv_i2c_bus_read(struct mr_i2c_bus *i2c_bus, uint8_t *buf, size_t size)
|
||||
static uint8_t drv_i2c_bus_read(struct mr_i2c_bus *i2c_bus)
|
||||
{
|
||||
struct drv_i2c_bus_data *i2c_bus_data = (struct drv_i2c_bus_data *)i2c_bus->dev.drv->data;
|
||||
ssize_t rd_size = 0;
|
||||
int i = 0;
|
||||
|
||||
for (rd_size = 0; rd_size < size; rd_size++)
|
||||
/* Read data */
|
||||
while (I2C_CheckEvent(i2c_bus_data->instance, I2C_EVENT_MASTER_BYTE_RECEIVED) == RESET)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
/* Read data */
|
||||
while (I2C_CheckEvent(i2c_bus_data->instance, I2C_EVENT_MASTER_BYTE_RECEIVED) == RESET)
|
||||
i++;
|
||||
if (i > INT16_MAX)
|
||||
{
|
||||
i++;
|
||||
if (i > UINT16_MAX)
|
||||
{
|
||||
return rd_size;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
buf[rd_size] = I2C_ReceiveData(i2c_bus_data->instance);
|
||||
}
|
||||
return rd_size;
|
||||
return (uint8_t)I2C_ReceiveData(i2c_bus_data->instance);
|
||||
}
|
||||
|
||||
static ssize_t drv_i2c_bus_write(struct mr_i2c_bus *i2c_bus, const uint8_t *buf, size_t size)
|
||||
static void drv_i2c_bus_write(struct mr_i2c_bus *i2c_bus, uint8_t data)
|
||||
{
|
||||
struct drv_i2c_bus_data *i2c_bus_data = (struct drv_i2c_bus_data *)i2c_bus->dev.drv->data;
|
||||
ssize_t wr_size = 0;
|
||||
int i = 0;
|
||||
|
||||
for (wr_size = 0; wr_size < size; wr_size++)
|
||||
/* Write data */
|
||||
I2C_SendData(i2c_bus_data->instance, data);
|
||||
while (I2C_CheckEvent(i2c_bus_data->instance, I2C_EVENT_MASTER_BYTE_TRANSMITTED) == RESET)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
/* Write data */
|
||||
I2C_SendData(i2c_bus_data->instance, buf[wr_size]);
|
||||
while (I2C_CheckEvent(i2c_bus_data->instance, I2C_EVENT_MASTER_BYTE_TRANSMITTED) == RESET)
|
||||
i++;
|
||||
if (i > INT16_MAX)
|
||||
{
|
||||
i++;
|
||||
if (i > UINT16_MAX)
|
||||
{
|
||||
return wr_size;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
return wr_size;
|
||||
}
|
||||
|
||||
static void drv_i2c_bus_isr(struct mr_i2c_bus *i2c_bus)
|
||||
|
||||
@@ -249,7 +249,7 @@ static int drv_pin_configure(struct mr_pin *pin, int number, int mode)
|
||||
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
|
||||
|
||||
EXTI_InitStructure.EXTI_Line = pin_drv_data->pin;
|
||||
EXTI_InitStructure.EXTI_Line = pin_data->pin;
|
||||
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
||||
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
||||
GPIO_EXTILineConfig(number / 16, exti_line);
|
||||
@@ -286,20 +286,20 @@ static int drv_pin_configure(struct mr_pin *pin, int number, int mode)
|
||||
}
|
||||
pin_irq_mask[exti_line] = -1;
|
||||
|
||||
EXTI_InitStructure.EXTI_Line = pin_drv_data->pin;
|
||||
EXTI_InitStructure.EXTI_Line = pin_data->pin;
|
||||
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
||||
GPIO_EXTILineConfig(number / 16, exti_line);
|
||||
EXTI_Init(&EXTI_InitStructure);
|
||||
}
|
||||
|
||||
/* Configure GPIO */
|
||||
GPIO_InitStructure.GPIO_Pin = pin_drv_data->pin;
|
||||
GPIO_InitStructure.GPIO_Pin = pin_data->pin;
|
||||
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
||||
GPIO_Init(pin_port_data->port, &GPIO_InitStructure);
|
||||
return MR_EOK;
|
||||
}
|
||||
|
||||
static int drv_pin_read(struct mr_pin *pin, int number)
|
||||
static uint8_t drv_pin_read(struct mr_pin *pin, int number)
|
||||
{
|
||||
struct drv_pin_port_data *pin_port_data = drv_pin_get_port_data(number);
|
||||
struct drv_pin_data *pin_data = drv_pin_get_data(number);
|
||||
@@ -309,10 +309,10 @@ static int drv_pin_read(struct mr_pin *pin, int number)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return (int)GPIO_ReadInputDataBit(pin_port_data->port, pin_drv_data->pin);
|
||||
return (int)GPIO_ReadInputDataBit(pin_port_data->port, pin_data->pin);
|
||||
}
|
||||
|
||||
static void drv_pin_write(struct mr_pin *pin, int number, int value)
|
||||
static void drv_pin_write(struct mr_pin *pin, int number, uint8_t value)
|
||||
{
|
||||
struct drv_pin_port_data *pin_port_data = drv_pin_get_port_data(number);
|
||||
struct drv_pin_data *pin_data = drv_pin_get_data(number);
|
||||
@@ -322,7 +322,7 @@ static void drv_pin_write(struct mr_pin *pin, int number, int value)
|
||||
{
|
||||
return;
|
||||
}
|
||||
GPIO_WriteBit(pin_port_data->port, pin_drv_data->pin, value);
|
||||
GPIO_WriteBit(pin_port_data->port, pin_data->pin, value);
|
||||
}
|
||||
|
||||
void EXTI0_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
|
||||
|
||||
@@ -572,53 +572,43 @@ static int drv_serial_configure(struct mr_serial *serial, struct mr_serial_confi
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
|
||||
USART_Init(serial_data->instance, &USART_InitStructure);
|
||||
USART_Cmd(serial_data->instance, state);
|
||||
USART_ClearFlag(serial_data->instance, USART_FLAG_RXNE);
|
||||
USART_ClearFlag(serial_data->instance, USART_FLAG_TC);
|
||||
return MR_EOK;
|
||||
}
|
||||
|
||||
static ssize_t drv_serial_read(struct mr_serial *serial, uint8_t *buf, size_t size)
|
||||
static uint8_t drv_serial_read(struct mr_serial *serial)
|
||||
{
|
||||
struct drv_serial_data *serial_data = (struct drv_serial_data *)serial->dev.drv->data;
|
||||
ssize_t rd_size = 0;
|
||||
int i = 0;
|
||||
|
||||
for (rd_size = 0; rd_size < size; rd_size++)
|
||||
/* Read data */
|
||||
while (USART_GetFlagStatus(serial_data->instance, USART_FLAG_RXNE) == RESET)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
/* Read data */
|
||||
while (USART_GetFlagStatus(serial_data->instance, USART_FLAG_RXNE) == RESET)
|
||||
i++;
|
||||
if (i > INT16_MAX)
|
||||
{
|
||||
i++;
|
||||
if (i > UINT16_MAX)
|
||||
{
|
||||
return rd_size;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
buf[rd_size] = USART_ReceiveData(serial_data->instance);
|
||||
}
|
||||
return rd_size;
|
||||
return (uint8_t)USART_ReceiveData(serial_data->instance);
|
||||
}
|
||||
|
||||
static ssize_t drv_serial_write(struct mr_serial *serial, const uint8_t *buf, size_t size)
|
||||
static void drv_serial_write(struct mr_serial *serial, uint8_t data)
|
||||
{
|
||||
struct drv_serial_data *serial_data = (struct drv_serial_data *)serial->dev.drv->data;
|
||||
ssize_t wr_size = 0;
|
||||
int i = 0;
|
||||
|
||||
for (wr_size = 0; wr_size < size; wr_size++)
|
||||
/* Write data */
|
||||
USART_SendData(serial_data->instance, data);
|
||||
while (USART_GetFlagStatus(serial_data->instance, USART_FLAG_TC) == RESET)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
/* Write data */
|
||||
while (USART_GetFlagStatus(serial_data->instance, USART_FLAG_TC) == RESET)
|
||||
i++;
|
||||
if (i > INT16_MAX)
|
||||
{
|
||||
i++;
|
||||
if (i > UINT16_MAX)
|
||||
{
|
||||
return wr_size;
|
||||
}
|
||||
return;
|
||||
}
|
||||
USART_SendData(serial_data->instance, buf[wr_size]);
|
||||
}
|
||||
return wr_size;
|
||||
}
|
||||
|
||||
static void drv_serial_start_tx(struct mr_serial *serial)
|
||||
|
||||
@@ -358,7 +358,7 @@ static uint32_t drv_spi_bus_read(struct mr_spi_bus *spi_bus)
|
||||
while (SPI_I2S_GetFlagStatus(spi_bus_data->instance, SPI_I2S_FLAG_RXNE) == RESET)
|
||||
{
|
||||
i++;
|
||||
if (i > UINT16_MAX)
|
||||
if (i > INT16_MAX)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -375,7 +375,7 @@ static void drv_spi_bus_write(struct mr_spi_bus *spi_bus, uint32_t data)
|
||||
while (SPI_I2S_GetFlagStatus(spi_bus_data->instance, SPI_I2S_FLAG_TXE) == RESET)
|
||||
{
|
||||
i++;
|
||||
if (i > UINT16_MAX)
|
||||
if (i > INT16_MAX)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "drv_timer.h"
|
||||
|
||||
#ifdef MR_USING_TIMER
|
||||
#define MR_USING_TIMER1
|
||||
|
||||
#if !defined(MR_USING_TIMER1) && !defined(MR_USING_TIMER2) && !defined(MR_USING_TIMER3) && !defined(MR_USING_TIMER4) && !defined(MR_USING_TIMER5) && !defined(MR_USING_TIMER6) && !defined(MR_USING_TIMER7) && !defined(MR_USING_TIMER8) && !defined(MR_USING_TIMER9) && !defined(MR_USING_TIMER10)
|
||||
#error "Please define at least one Timer macro like MR_USING_TIMER1. Otherwise undefine MR_USING_TIMER."
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user