mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-10-02 14:23:19 +08:00
[gd32][drivers] auto formatted
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2020, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
||||
@@ -79,7 +79,7 @@ void rt_hw_board_init()
|
||||
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_HEAP
|
||||
#ifdef RT_USING_HEAP
|
||||
rt_system_heap_init((void*)HEAP_BEGIN, (void*)HEAP_END);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include <gd32f30x.h>
|
||||
|
||||
// <o> Internal SRAM memory size[Kbytes] <8-64>
|
||||
// <i>Default: 64
|
||||
// <i>Default: 64
|
||||
#ifdef __ICCARM__
|
||||
// Use *.icf ram symbal, to avoid hardcode.
|
||||
extern char __ICFEDIT_region_RAM_end__;
|
||||
|
||||
@@ -261,7 +261,7 @@ void gd32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
|
||||
/* GPIO Periph clock enable */
|
||||
rcu_periph_clock_enable(index->clk);
|
||||
pin_mode = GPIO_MODE_OUT_PP;
|
||||
|
||||
|
||||
switch(mode)
|
||||
{
|
||||
case PIN_MODE_OUTPUT:
|
||||
@@ -442,7 +442,7 @@ rt_err_t gd32_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_
|
||||
return RT_EINVAL;
|
||||
}
|
||||
irqmap = &pin_irq_map[hdr_index];
|
||||
|
||||
|
||||
switch (pin_irq_hdr_tab[hdr_index].mode)
|
||||
{
|
||||
case PIN_IRQ_MODE_RISING:
|
||||
@@ -463,14 +463,14 @@ rt_err_t gd32_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_
|
||||
|
||||
/* enable and set interrupt priority */
|
||||
nvic_irq_enable(irqmap->irqno, 5U, 0U);
|
||||
|
||||
|
||||
/* connect EXTI line to GPIO pin */
|
||||
gpio_exti_source_select(index->port_src, index->pin_src);
|
||||
|
||||
/* configure EXTI line */
|
||||
exti_init((exti_line_enum)(index->pin), EXTI_INTERRUPT, trigger_mode);
|
||||
exti_interrupt_flag_clear((exti_line_enum)(index->pin));
|
||||
|
||||
|
||||
rt_hw_interrupt_enable(level);
|
||||
}
|
||||
else if (enabled == PIN_IRQ_DISABLE)
|
||||
@@ -505,7 +505,7 @@ int rt_hw_pin_init(void)
|
||||
int result;
|
||||
|
||||
result = rt_device_pin_register("pin", &_gd32_pin_ops, RT_NULL);
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
INIT_BOARD_EXPORT(rt_hw_pin_init);
|
||||
@@ -524,7 +524,7 @@ void GD32_GPIO_EXTI_IRQHandler(rt_int8_t exti_line)
|
||||
{
|
||||
pin_irq_hdr(exti_line);
|
||||
exti_interrupt_flag_clear((exti_line_enum)(1 << exti_line));
|
||||
}
|
||||
}
|
||||
}
|
||||
void EXTI0_IRQHandler(void)
|
||||
{
|
||||
|
||||
@@ -168,7 +168,7 @@ static int gd32_i2c_read(rt_uint32_t i2c_periph, rt_uint16_t slave_address, rt_u
|
||||
*p_buffer = i2c_data_receive(i2c_periph);
|
||||
|
||||
/* point to the next location where the byte read will be saved */
|
||||
p_buffer++;
|
||||
p_buffer++;
|
||||
|
||||
/* decrement the read bytes counter */
|
||||
data_byte--;
|
||||
@@ -277,7 +277,7 @@ static rt_size_t gd32_i2c_xfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ret = i;
|
||||
|
||||
out:
|
||||
@@ -287,7 +287,7 @@ out:
|
||||
}
|
||||
|
||||
static const struct rt_i2c_bus_device_ops i2c_ops =
|
||||
{
|
||||
{
|
||||
gd32_i2c_xfer,
|
||||
RT_NULL,
|
||||
RT_NULL
|
||||
@@ -324,7 +324,7 @@ int rt_hw_i2c_init(void)
|
||||
|
||||
i2c_device.priv = (void *)&_i2c_bit_ops;
|
||||
rt_i2c_bit_add_bus(&i2c_device, I2C_BUS_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
#else /* register hardware I2C */
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat
|
||||
spi_init_struct.prescale = SPI_PSC_256;
|
||||
}
|
||||
} /* baudrate */
|
||||
|
||||
|
||||
switch(configuration->mode & RT_SPI_MODE_3)
|
||||
{
|
||||
case RT_SPI_MODE_0:
|
||||
@@ -135,7 +135,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat
|
||||
spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_2EDGE;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* MSB or LSB */
|
||||
if(configuration->mode & RT_SPI_MSB)
|
||||
{
|
||||
@@ -145,7 +145,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat
|
||||
{
|
||||
spi_init_struct.endian = SPI_ENDIAN_LSB;
|
||||
}
|
||||
|
||||
|
||||
spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;
|
||||
spi_init_struct.device_mode = SPI_MASTER;
|
||||
spi_init_struct.nss = SPI_NSS_SOFT;
|
||||
@@ -181,7 +181,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
|
||||
const rt_uint8_t * send_ptr = message->send_buf;
|
||||
rt_uint8_t * recv_ptr = message->recv_buf;
|
||||
rt_uint32_t size = message->length;
|
||||
|
||||
|
||||
DEBUG_PRINTF("spi poll transfer start: %d\n", size);
|
||||
|
||||
while(size--)
|
||||
@@ -192,7 +192,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
|
||||
{
|
||||
data = *send_ptr++;
|
||||
}
|
||||
|
||||
|
||||
// Todo: replace register read/write by gd32f3 lib
|
||||
//Wait until the transmit buffer is empty
|
||||
while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_TBE));
|
||||
@@ -267,8 +267,8 @@ int gd32_hw_spi_init(void)
|
||||
rcu_periph_clock_enable(RCU_SPI0);
|
||||
/* SPI0_SCK(PA5), SPI0_MISO(PA6) and SPI0_MOSI(PA7) GPIO pin configuration */
|
||||
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5 | GPIO_PIN_7);
|
||||
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
|
||||
|
||||
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
|
||||
|
||||
#endif
|
||||
#ifdef RT_USING_SPI1
|
||||
static struct rt_spi_bus spi_bus1;
|
||||
@@ -287,7 +287,7 @@ int gd32_hw_spi_init(void)
|
||||
static struct rt_spi_bus spi_bus2;
|
||||
spi_bus2.parent.user_data = (void *)SPI2;
|
||||
|
||||
result = rt_spi_bus_register(&spi_bus2, "spi2", &gd32_spi_ops);
|
||||
result = rt_spi_bus_register(&spi_bus2, "spi2", &gd32_spi_ops);
|
||||
|
||||
rcu_periph_clock_enable(RCU_SPI2);
|
||||
rcu_periph_clock_enable(RCU_GPIOB);
|
||||
|
||||
@@ -30,7 +30,7 @@ static int rt_hw_gd25q40_init(void)
|
||||
static rt_base_t gd25q_cs_pin; /* SPI设备CS片选引脚 */
|
||||
|
||||
gd25q_cs_pin = GD25Q_SPI_CS_PIN;
|
||||
|
||||
|
||||
rt_pin_mode(GD25Q_SPI_CS_PIN, GPIO_MODE_OUT_PP);
|
||||
|
||||
res = rt_spi_bus_attach_device(&spi_dev_gd25q, SPI_DEVICE_NAME, SPI_BUS_NAME, (void*)gd25q_cs_pin);
|
||||
|
||||
@@ -44,7 +44,7 @@ struct gd32_uart
|
||||
uint32_t tx_port;
|
||||
uint16_t tx_pin;
|
||||
uint32_t rx_port;
|
||||
uint16_t rx_pin;
|
||||
uint16_t rx_pin;
|
||||
|
||||
struct rt_serial_device * serial;
|
||||
char *device_name;
|
||||
@@ -143,7 +143,7 @@ static const struct gd32_uart uarts[] = {
|
||||
"uart0",
|
||||
},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RT_USING_USART1
|
||||
{
|
||||
USART1, // uart peripheral index
|
||||
@@ -155,7 +155,7 @@ static const struct gd32_uart uarts[] = {
|
||||
"uart1",
|
||||
},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RT_USING_USART2
|
||||
{
|
||||
USART2, // uart peripheral index
|
||||
@@ -167,7 +167,7 @@ static const struct gd32_uart uarts[] = {
|
||||
"uart2",
|
||||
},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RT_USING_UART3
|
||||
{
|
||||
UART3, // uart peripheral index
|
||||
@@ -179,7 +179,7 @@ static const struct gd32_uart uarts[] = {
|
||||
"uart3",
|
||||
},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RT_USING_UART4
|
||||
{
|
||||
UART4, // uart peripheral index
|
||||
@@ -228,9 +228,9 @@ static rt_err_t gd32_configure(struct rt_serial_device *serial, struct serial_co
|
||||
RT_ASSERT(cfg != RT_NULL);
|
||||
|
||||
uart = (struct gd32_uart *)serial->parent.user_data;
|
||||
|
||||
|
||||
gd32_uart_gpio_init(uart);
|
||||
|
||||
|
||||
usart_baudrate_set(uart->uart_periph, cfg->baud_rate);
|
||||
|
||||
switch (cfg->data_bits)
|
||||
@@ -310,7 +310,7 @@ static int gd32_putc(struct rt_serial_device *serial, char ch)
|
||||
|
||||
usart_data_transmit(uart->uart_periph, ch);
|
||||
while((usart_flag_get(uart->uart_periph, USART_FLAG_TC) == RESET));
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,15 +23,15 @@ static uint32_t COM_RX_PIN[COMn] = {EVAL_COM1_RX_PIN, EVAL_COM2_RX_PIN};
|
||||
static uint32_t COM_GPIO_PORT[COMn] = {EVAL_COM1_GPIO_PORT, EVAL_COM2_GPIO_PORT};
|
||||
static rcu_periph_enum COM_GPIO_CLK[COMn] = {EVAL_COM1_GPIO_CLK, EVAL_COM2_GPIO_CLK};
|
||||
|
||||
static rcu_periph_enum GPIO_CLK[LEDn] = {LED2_GPIO_CLK, LED3_GPIO_CLK,
|
||||
static rcu_periph_enum GPIO_CLK[LEDn] = {LED2_GPIO_CLK, LED3_GPIO_CLK,
|
||||
LED4_GPIO_CLK, LED5_GPIO_CLK};
|
||||
|
||||
static uint32_t KEY_PORT[KEYn] = {WAKEUP_KEY_GPIO_PORT,
|
||||
static uint32_t KEY_PORT[KEYn] = {WAKEUP_KEY_GPIO_PORT,
|
||||
TAMPER_KEY_GPIO_PORT,
|
||||
USER_KEY1_GPIO_PORT,
|
||||
USER_KEY2_GPIO_PORT};
|
||||
static uint32_t KEY_PIN[KEYn] = {WAKEUP_KEY_PIN, TAMPER_KEY_PIN,USER_KEY1_PIN,USER_KEY2_PIN};
|
||||
static rcu_periph_enum KEY_CLK[KEYn] = {WAKEUP_KEY_GPIO_CLK,
|
||||
static rcu_periph_enum KEY_CLK[KEYn] = {WAKEUP_KEY_GPIO_CLK,
|
||||
TAMPER_KEY_GPIO_CLK,
|
||||
USER_KEY1_GPIO_CLK,
|
||||
USER_KEY2_GPIO_CLK};
|
||||
@@ -47,7 +47,7 @@ static uint8_t KEY_PIN_SOURCE[KEYn] = {WAKEUP_KEY_EXTI_PIN_SOURCE,
|
||||
TAMPER_KEY_EXTI_PIN_SOURCE,
|
||||
USER_KEY1_EXTI_PIN_SOURCE,
|
||||
USER_KEY2_EXTI_PIN_SOURCE};
|
||||
static uint8_t KEY_IRQn[KEYn] = {WAKEUP_KEY_EXTI_IRQn,
|
||||
static uint8_t KEY_IRQn[KEYn] = {WAKEUP_KEY_EXTI_IRQn,
|
||||
TAMPER_KEY_EXTI_IRQn,
|
||||
USER_KEY1_EXTI_IRQn,
|
||||
USER_KEY2_EXTI_IRQn};
|
||||
@@ -66,7 +66,7 @@ void gd_eval_led_init (led_typedef_enum lednum)
|
||||
{
|
||||
/* enable the led clock */
|
||||
rcu_periph_clock_enable(GPIO_CLK[lednum]);
|
||||
/* configure led GPIO port */
|
||||
/* configure led GPIO port */
|
||||
gpio_init(GPIO_PORT[lednum], GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,GPIO_PIN[lednum]);
|
||||
|
||||
GPIO_BC(GPIO_PORT[lednum]) = GPIO_PIN[lednum];
|
||||
@@ -114,7 +114,7 @@ void gd_eval_led_off(led_typedef_enum lednum)
|
||||
*/
|
||||
void gd_eval_led_toggle(led_typedef_enum lednum)
|
||||
{
|
||||
gpio_bit_write(GPIO_PORT[lednum], GPIO_PIN[lednum],
|
||||
gpio_bit_write(GPIO_PORT[lednum], GPIO_PIN[lednum],
|
||||
(bit_status)(1-gpio_input_bit_get(GPIO_PORT[lednum], GPIO_PIN[lednum])));
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ void gd_eval_com_init(uint32_t com)
|
||||
}else if(EVAL_COM2 == com){
|
||||
com_id = 1U;
|
||||
}
|
||||
|
||||
|
||||
/* enable GPIO clock */
|
||||
rcu_periph_clock_enable(COM_GPIO_CLK[com_id]);
|
||||
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
#endif
|
||||
|
||||
#include "gd32f30x.h"
|
||||
|
||||
|
||||
/* exported types */
|
||||
typedef enum
|
||||
typedef enum
|
||||
{
|
||||
LED2 = 0,
|
||||
LED3 = 1,
|
||||
@@ -27,7 +27,7 @@ typedef enum
|
||||
LED5 = 3
|
||||
} led_typedef_enum;
|
||||
|
||||
typedef enum
|
||||
typedef enum
|
||||
{
|
||||
KEY_WAKEUP = 0,
|
||||
KEY_TAMPER = 1,
|
||||
@@ -35,7 +35,7 @@ typedef enum
|
||||
KEY_USER2 = 3
|
||||
} key_typedef_enum;
|
||||
|
||||
typedef enum
|
||||
typedef enum
|
||||
{
|
||||
KEY_MODE_GPIO = 0,
|
||||
KEY_MODE_EXTI = 1
|
||||
@@ -47,15 +47,15 @@ typedef enum
|
||||
#define LED2_PIN GPIO_PIN_0
|
||||
#define LED2_GPIO_PORT GPIOF
|
||||
#define LED2_GPIO_CLK RCU_GPIOF
|
||||
|
||||
|
||||
#define LED3_PIN GPIO_PIN_1
|
||||
#define LED3_GPIO_PORT GPIOF
|
||||
#define LED3_GPIO_CLK RCU_GPIOF
|
||||
|
||||
|
||||
#define LED4_PIN GPIO_PIN_2
|
||||
#define LED4_GPIO_PORT GPIOF
|
||||
#define LED4_GPIO_CLK RCU_GPIOF
|
||||
|
||||
|
||||
#define LED5_PIN GPIO_PIN_3
|
||||
#define LED5_GPIO_PORT GPIOF
|
||||
#define LED5_GPIO_CLK RCU_GPIOF
|
||||
@@ -85,7 +85,7 @@ typedef enum
|
||||
#define WAKEUP_KEY_EXTI_LINE EXTI_0
|
||||
#define WAKEUP_KEY_EXTI_PORT_SOURCE GPIO_PORT_SOURCE_GPIOA
|
||||
#define WAKEUP_KEY_EXTI_PIN_SOURCE GPIO_PIN_SOURCE_0
|
||||
#define WAKEUP_KEY_EXTI_IRQn EXTI0_IRQn
|
||||
#define WAKEUP_KEY_EXTI_IRQn EXTI0_IRQn
|
||||
|
||||
/* tamper push-button */
|
||||
#define TAMPER_KEY_PIN GPIO_PIN_13
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/*!
|
||||
\brief lcd peripheral initialize
|
||||
\param[in] none
|
||||
\param[in] none
|
||||
\param[out] none
|
||||
\retval none
|
||||
*/
|
||||
@@ -37,15 +37,15 @@ void exmc_lcd_init(void)
|
||||
gpio_init(GPIOD, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1| GPIO_PIN_8 | GPIO_PIN_9 |
|
||||
GPIO_PIN_10 | GPIO_PIN_14 | GPIO_PIN_15);
|
||||
|
||||
/* PE7(EXMC_D4), PE8(EXMC_D5), PE9(EXMC_D6), PE10(EXMC_D7), PE11(EXMC_D8), PE12(EXMC_D9),
|
||||
/* PE7(EXMC_D4), PE8(EXMC_D5), PE9(EXMC_D6), PE10(EXMC_D7), PE11(EXMC_D8), PE12(EXMC_D9),
|
||||
PE13(EXMC_D10), PE14(EXMC_D11), PE15(EXMC_D12) */
|
||||
gpio_init(GPIOE, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 |
|
||||
GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 |
|
||||
gpio_init(GPIOE, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 |
|
||||
GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 |
|
||||
GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15);
|
||||
|
||||
/* configure PE2(EXMC_A23) */
|
||||
/* configure PE2(EXMC_A23) */
|
||||
gpio_init(GPIOE, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2);
|
||||
|
||||
|
||||
/* configure NOE and NWE */
|
||||
gpio_init(GPIOD, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4 | GPIO_PIN_5);
|
||||
|
||||
@@ -106,7 +106,7 @@ uint16_t lcd_register_read(uint8_t register_id)
|
||||
{
|
||||
uint16_t data;
|
||||
*(__IO uint16_t *) (BANK0_LCD_C)= register_id;
|
||||
data = *(__IO uint16_t *) (BANK0_LCD_D);
|
||||
data = *(__IO uint16_t *) (BANK0_LCD_D);
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -154,13 +154,13 @@ void lcd_gram_write(uint16_t rgb_code)
|
||||
uint16_t lcd_gram_read(void)
|
||||
{
|
||||
uint16_t data;
|
||||
|
||||
|
||||
/* write GRAM register (R22h) */
|
||||
*(__IO uint16_t *) (BANK0_LCD_C) = 0x0022;
|
||||
/* dummy read (invalid data) */
|
||||
*(__IO uint16_t *) (BANK0_LCD_D);
|
||||
*(__IO uint16_t *) (BANK0_LCD_D);
|
||||
|
||||
data = *(__IO uint16_t *) (BANK0_LCD_D);
|
||||
data = *(__IO uint16_t *) (BANK0_LCD_D);
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -219,7 +219,7 @@ void lcd_init(void)
|
||||
}else{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
for(i=50000;i>0;i--);
|
||||
}
|
||||
|
||||
@@ -277,16 +277,16 @@ void lcd_point_set(uint16_t x,uint16_t y,uint16_t point)
|
||||
\param[in] x: the row-coordinate
|
||||
\param[in] y: the column-coordinate
|
||||
\param[out] none
|
||||
\retval GRAM value of point
|
||||
\retval GRAM value of point
|
||||
*/
|
||||
uint16_t lcd_point_get(uint16_t x,uint16_t y)
|
||||
{
|
||||
uint16_t data;
|
||||
|
||||
|
||||
if ((x > 240)||(y > 320)){
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
lcd_cursor_set(x,y);
|
||||
data = lcd_gram_read();
|
||||
|
||||
@@ -410,7 +410,7 @@ void lcd_picture_draw(uint16_t start_x,uint16_t start_y,uint16_t end_x,uint16_t
|
||||
y = start_y;
|
||||
|
||||
total = (end_x - start_x + 1) * (end_y - start_y + 1);
|
||||
|
||||
|
||||
for(i = 0; i < total; i ++){
|
||||
/* set point according to the specified position and color */
|
||||
lcd_point_set(x,y,*picturepointer++);
|
||||
@@ -441,7 +441,7 @@ void lcd_char_display(uint16_t x,uint16_t y,uint8_t c,char_format_struct c_forma
|
||||
uint16_t i = 0, j = 0;
|
||||
uint8_t temp_char = 0;
|
||||
uint16_t temp_char_16 = 0;
|
||||
|
||||
|
||||
if(CHAR_FONT_8_16 == c_format.font){ /* 8x16 ASCII */
|
||||
for (i = 0; i < 16; i++) {
|
||||
temp_char = ascii_8x16[((c - 0x20) * 16) + i];
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
|
||||
/* char format struct definitions */
|
||||
typedef struct
|
||||
{
|
||||
{
|
||||
uint16_t font; /*!< the type of font */
|
||||
uint16_t direction; /*!< the direction of char */
|
||||
uint16_t char_color; /*!< the color of char */
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
#define EXT_SDRAM_END (EXT_SDRAM_BEGIN + (32U * 1024 * 1024)) /* the end address of external SDRAM */
|
||||
|
||||
// <o> Internal SRAM memory size[Kbytes] <8-64>
|
||||
// <i>Default: 64
|
||||
// <i>Default: 64
|
||||
#ifdef __ICCARM__
|
||||
// Use *.icf ram symbal, to avoid hardcode.
|
||||
extern char __ICFEDIT_region_RAM_end__;
|
||||
|
||||
@@ -35,16 +35,16 @@
|
||||
//#define EMAC_TX_DUMP
|
||||
|
||||
#ifdef EMAC_DEBUG
|
||||
#define EMAC_TRACE rt_kprintf
|
||||
#define EMAC_TRACE rt_kprintf
|
||||
#else
|
||||
#define EMAC_TRACE(...)
|
||||
#endif
|
||||
|
||||
#define EMAC_RXBUFNB 4
|
||||
#define EMAC_TXBUFNB 2
|
||||
#define EMAC_RXBUFNB 4
|
||||
#define EMAC_TXBUFNB 2
|
||||
|
||||
#define EMAC_PHY_AUTO 0
|
||||
#define EMAC_PHY_10MBIT 1
|
||||
#define EMAC_PHY_AUTO 0
|
||||
#define EMAC_PHY_10MBIT 1
|
||||
#define EMAC_PHY_100MBIT 2
|
||||
|
||||
#define MAX_ADDR_LEN 6
|
||||
@@ -55,14 +55,14 @@ struct gd32_emac
|
||||
|
||||
rt_uint8_t phy_mode;
|
||||
/* interface address info. */
|
||||
rt_uint8_t dev_addr[MAX_ADDR_LEN]; /* hw address */
|
||||
rt_uint8_t dev_addr[MAX_ADDR_LEN]; /* hw address */
|
||||
|
||||
struct rt_synopsys_eth * ETHERNET_MAC;
|
||||
IRQn_Type ETHER_MAC_IRQ;
|
||||
|
||||
|
||||
EMAC_DMADESCTypeDef *DMATxDescToSet;
|
||||
EMAC_DMADESCTypeDef *DMARxDescToGet;
|
||||
|
||||
|
||||
#pragma pack(4)
|
||||
EMAC_DMADESCTypeDef DMARxDscrTab[EMAC_RXBUFNB];
|
||||
#pragma pack(4)
|
||||
@@ -71,7 +71,7 @@ struct gd32_emac
|
||||
rt_uint8_t Rx_Buff[EMAC_RXBUFNB][EMAC_MAX_PACKET_SIZE];
|
||||
#pragma pack(4)
|
||||
rt_uint8_t Tx_Buff[EMAC_TXBUFNB][EMAC_MAX_PACKET_SIZE];
|
||||
|
||||
|
||||
struct rt_semaphore tx_buf_free;
|
||||
};
|
||||
|
||||
@@ -548,14 +548,14 @@ static void enet_gpio_config(void)
|
||||
rcu_periph_clock_enable(RCU_GPIOG);
|
||||
rcu_periph_clock_enable(RCU_GPIOH);
|
||||
rcu_periph_clock_enable(RCU_GPIOI);
|
||||
|
||||
|
||||
gpio_af_set(GPIOA, GPIO_AF_0, GPIO_PIN_8);
|
||||
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_8);
|
||||
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_8);
|
||||
|
||||
|
||||
/* enable SYSCFG clock */
|
||||
rcu_periph_clock_enable(RCU_SYSCFG);
|
||||
|
||||
|
||||
/* choose DIV2 to get 50MHz from 200MHz on CKOUT0 pin (PA8) to clock the PHY */
|
||||
rcu_ckout0_config(RCU_CKOUT0SRC_PLLP, RCU_CKOUT0_DIV4);
|
||||
syscfg_enet_phy_interface_config(SYSCFG_ENET_PHY_RMII);
|
||||
@@ -563,31 +563,31 @@ static void enet_gpio_config(void)
|
||||
/* PA1: ETH_RMII_REF_CLK */
|
||||
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1);
|
||||
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_1);
|
||||
|
||||
|
||||
/* PA2: ETH_MDIO */
|
||||
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_2);
|
||||
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_2);
|
||||
|
||||
|
||||
/* PA7: ETH_RMII_CRS_DV */
|
||||
gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_7);
|
||||
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_7);
|
||||
|
||||
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_7);
|
||||
|
||||
gpio_af_set(GPIOA, GPIO_AF_11, GPIO_PIN_1);
|
||||
gpio_af_set(GPIOA, GPIO_AF_11, GPIO_PIN_2);
|
||||
gpio_af_set(GPIOA, GPIO_AF_11, GPIO_PIN_7);
|
||||
|
||||
|
||||
/* PB11: ETH_RMII_TX_EN */
|
||||
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_11);
|
||||
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_11);
|
||||
|
||||
|
||||
/* PB12: ETH_RMII_TXD0 */
|
||||
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_12);
|
||||
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_12);
|
||||
|
||||
|
||||
/* PB13: ETH_RMII_TXD1 */
|
||||
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_13);
|
||||
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_13);
|
||||
|
||||
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_13);
|
||||
|
||||
gpio_af_set(GPIOB, GPIO_AF_11, GPIO_PIN_11);
|
||||
gpio_af_set(GPIOB, GPIO_AF_11, GPIO_PIN_12);
|
||||
gpio_af_set(GPIOB, GPIO_AF_11, GPIO_PIN_13);
|
||||
@@ -599,11 +599,11 @@ static void enet_gpio_config(void)
|
||||
/* PC4: ETH_RMII_RXD0 */
|
||||
gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_4);
|
||||
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_4);
|
||||
|
||||
|
||||
/* PC5: ETH_RMII_RXD1 */
|
||||
gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_5);
|
||||
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_5);
|
||||
|
||||
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_5);
|
||||
|
||||
gpio_af_set(GPIOC, GPIO_AF_11, GPIO_PIN_1);
|
||||
gpio_af_set(GPIOC, GPIO_AF_11, GPIO_PIN_4);
|
||||
gpio_af_set(GPIOC, GPIO_AF_11, GPIO_PIN_5);
|
||||
@@ -613,17 +613,17 @@ static void enet_gpio_config(void)
|
||||
int rt_hw_gd32_eth_init(void)
|
||||
{
|
||||
rt_kprintf("rt_gd32_eth_init...\n");
|
||||
|
||||
|
||||
/* enable ethernet clock */
|
||||
rcu_periph_clock_enable(RCU_ENET);
|
||||
rcu_periph_clock_enable(RCU_ENETTX);
|
||||
rcu_periph_clock_enable(RCU_ENETRX);
|
||||
|
||||
|
||||
nvic_configuration();
|
||||
|
||||
|
||||
/* configure the GPIO ports for ethernet pins */
|
||||
enet_gpio_config();
|
||||
|
||||
|
||||
/* set autonegotiation mode */
|
||||
gd32_emac_device0.phy_mode = EMAC_PHY_AUTO;
|
||||
gd32_emac_device0.ETHERNET_MAC = ETHERNET_MAC0;
|
||||
@@ -638,16 +638,16 @@ int rt_hw_gd32_eth_init(void)
|
||||
gd32_emac_device0.dev_addr[4] = 0x34;
|
||||
gd32_emac_device0.dev_addr[5] = 0x56;
|
||||
|
||||
gd32_emac_device0.parent.parent.init = gd32_emac_init;
|
||||
gd32_emac_device0.parent.parent.open = gd32_emac_open;
|
||||
gd32_emac_device0.parent.parent.close = gd32_emac_close;
|
||||
gd32_emac_device0.parent.parent.read = gd32_emac_read;
|
||||
gd32_emac_device0.parent.parent.write = gd32_emac_write;
|
||||
gd32_emac_device0.parent.parent.control = gd32_emac_control;
|
||||
gd32_emac_device0.parent.parent.init = gd32_emac_init;
|
||||
gd32_emac_device0.parent.parent.open = gd32_emac_open;
|
||||
gd32_emac_device0.parent.parent.close = gd32_emac_close;
|
||||
gd32_emac_device0.parent.parent.read = gd32_emac_read;
|
||||
gd32_emac_device0.parent.parent.write = gd32_emac_write;
|
||||
gd32_emac_device0.parent.parent.control = gd32_emac_control;
|
||||
gd32_emac_device0.parent.parent.user_data = RT_NULL;
|
||||
|
||||
gd32_emac_device0.parent.eth_rx = gd32_emac_rx;
|
||||
gd32_emac_device0.parent.eth_tx = gd32_emac_tx;
|
||||
gd32_emac_device0.parent.eth_rx = gd32_emac_rx;
|
||||
gd32_emac_device0.parent.eth_tx = gd32_emac_tx;
|
||||
|
||||
/* init tx buffer free semaphore */
|
||||
rt_sem_init(&gd32_emac_device0.tx_buf_free, "tx_buf0", EMAC_TXBUFNB, RT_IPC_FLAG_FIFO);
|
||||
|
||||
@@ -47,7 +47,7 @@ static void delay_1ms(volatile uint32_t count)
|
||||
|
||||
/*!
|
||||
\brief sdram peripheral initialize
|
||||
\param[in] sdram_device: specifie the SDRAM device
|
||||
\param[in] sdram_device: specifie the SDRAM device
|
||||
\param[out] none
|
||||
\retval none
|
||||
*/
|
||||
@@ -71,7 +71,7 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device)
|
||||
rcu_periph_clock_enable(RCU_GPIOH);
|
||||
|
||||
/* common GPIO configuration */
|
||||
/* SDNWE(PC0),SDNE0(PC2),SDCKE0(PC3) pin configuration */
|
||||
/* SDNWE(PC0),SDNE0(PC2),SDCKE0(PC3) pin configuration */
|
||||
gpio_af_set(GPIOC, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3);
|
||||
gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3);
|
||||
gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3);
|
||||
@@ -107,11 +107,11 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device)
|
||||
GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15);
|
||||
|
||||
/* A10(PG0),A11(PG1),A12(PG2),A14(PG4),A15(PG5),SDCLK(PG8),NCAS(PG15) pin configuration */
|
||||
gpio_af_set(GPIOG, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 |
|
||||
gpio_af_set(GPIOG, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 |
|
||||
GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_15);
|
||||
gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 |
|
||||
gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 |
|
||||
GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_15);
|
||||
gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 |
|
||||
gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 |
|
||||
GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_15);
|
||||
|
||||
/* specify which SDRAM to read and write */
|
||||
@@ -126,7 +126,7 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device)
|
||||
/* LMRD: 2 clock cycles */
|
||||
sdram_timing_init_struct.load_mode_register_delay = 2;
|
||||
/* XSRD: min = 67ns */
|
||||
sdram_timing_init_struct.exit_selfrefresh_delay = 7;
|
||||
sdram_timing_init_struct.exit_selfrefresh_delay = 7;
|
||||
/* RASD: min=42ns , max=120k (ns) */
|
||||
sdram_timing_init_struct.row_address_select_delay = 5;
|
||||
/* ARFD: min=60ns */
|
||||
@@ -144,9 +144,9 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device)
|
||||
sdram_init_struct.row_address_width = EXMC_SDRAM_ROW_ADDRESS_13;
|
||||
sdram_init_struct.data_width = EXMC_SDRAM_DATABUS_WIDTH_16B;
|
||||
sdram_init_struct.internal_bank_number = EXMC_SDRAM_4_INTER_BANK;
|
||||
sdram_init_struct.cas_latency = EXMC_CAS_LATENCY_3_SDCLK;
|
||||
sdram_init_struct.cas_latency = EXMC_CAS_LATENCY_3_SDCLK;
|
||||
sdram_init_struct.write_protection = DISABLE;
|
||||
sdram_init_struct.sdclock_config = EXMC_SDCLK_PERIODS_2_HCLK;
|
||||
sdram_init_struct.sdclock_config = EXMC_SDCLK_PERIODS_2_HCLK;
|
||||
sdram_init_struct.brust_read_switch = ENABLE;
|
||||
sdram_init_struct.pipeline_read_delay = EXMC_PIPELINE_DELAY_1_HCLK;
|
||||
sdram_init_struct.timing = &sdram_timing_init_struct;
|
||||
@@ -158,7 +158,7 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device)
|
||||
sdram_command_init_struct.bank_select = bank_select;
|
||||
sdram_command_init_struct.auto_refresh_number = EXMC_SDRAM_AUTO_REFLESH_1_SDCLK;
|
||||
sdram_command_init_struct.mode_register_content = 0;
|
||||
/* wait until the SDRAM controller is ready */
|
||||
/* wait until the SDRAM controller is ready */
|
||||
while((exmc_flag_get(sdram_device, EXMC_SDRAM_FLAG_NREADY) != RESET) && (timeout > 0)){
|
||||
timeout--;
|
||||
}
|
||||
@@ -174,7 +174,7 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device)
|
||||
sdram_command_init_struct.auto_refresh_number = EXMC_SDRAM_AUTO_REFLESH_1_SDCLK;
|
||||
sdram_command_init_struct.mode_register_content = 0;
|
||||
/* wait until the SDRAM controller is ready */
|
||||
timeout = SDRAM_TIMEOUT;
|
||||
timeout = SDRAM_TIMEOUT;
|
||||
while((exmc_flag_get(sdram_device, EXMC_SDRAM_FLAG_NREADY) != RESET) && (timeout > 0)){
|
||||
timeout--;
|
||||
}
|
||||
@@ -186,8 +186,8 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device)
|
||||
sdram_command_init_struct.bank_select = bank_select;
|
||||
sdram_command_init_struct.auto_refresh_number = EXMC_SDRAM_AUTO_REFLESH_8_SDCLK;
|
||||
sdram_command_init_struct.mode_register_content = 0;
|
||||
/* wait until the SDRAM controller is ready */
|
||||
timeout = SDRAM_TIMEOUT;
|
||||
/* wait until the SDRAM controller is ready */
|
||||
timeout = SDRAM_TIMEOUT;
|
||||
while((exmc_flag_get(sdram_device, EXMC_SDRAM_FLAG_NREADY) != RESET) && (timeout > 0)){
|
||||
timeout--;
|
||||
}
|
||||
@@ -207,8 +207,8 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device)
|
||||
sdram_command_init_struct.auto_refresh_number = EXMC_SDRAM_AUTO_REFLESH_1_SDCLK;
|
||||
sdram_command_init_struct.mode_register_content = command_content;
|
||||
|
||||
/* wait until the SDRAM controller is ready */
|
||||
timeout = SDRAM_TIMEOUT;
|
||||
/* wait until the SDRAM controller is ready */
|
||||
timeout = SDRAM_TIMEOUT;
|
||||
while((exmc_flag_get(sdram_device, EXMC_SDRAM_FLAG_NREADY) != RESET) && (timeout > 0)){
|
||||
timeout--;
|
||||
}
|
||||
@@ -221,8 +221,8 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device)
|
||||
/* (7.81 us * SDCLK_Freq) - 20 */
|
||||
exmc_sdram_refresh_count_set(761);
|
||||
|
||||
/* wait until the SDRAM controller is ready */
|
||||
timeout = SDRAM_TIMEOUT;
|
||||
/* wait until the SDRAM controller is ready */
|
||||
timeout = SDRAM_TIMEOUT;
|
||||
while((exmc_flag_get(sdram_device, EXMC_SDRAM_FLAG_NREADY) != RESET) && (timeout > 0)){
|
||||
timeout--;
|
||||
}
|
||||
@@ -258,20 +258,20 @@ void fill_buffer(uint8_t *pbuffer, uint16_t buffer_lengh, uint16_t offset)
|
||||
void sdram_writebuffer_8(uint32_t sdram_device,uint8_t* pbuffer, uint32_t writeaddr, uint32_t numbytetowrite)
|
||||
{
|
||||
uint32_t temp_addr;
|
||||
|
||||
|
||||
/* Select the base address according to EXMC_Bank */
|
||||
if(sdram_device == EXMC_SDRAM_DEVICE0){
|
||||
temp_addr = SDRAM_DEVICE0_ADDR;
|
||||
}else{
|
||||
temp_addr = SDRAM_DEVICE1_ADDR;
|
||||
}
|
||||
|
||||
|
||||
/* While there is data to write */
|
||||
for(; numbytetowrite != 0; numbytetowrite--) {
|
||||
/* Transfer data to the memory */
|
||||
*(uint8_t *) (temp_addr + writeaddr) = *pbuffer++;
|
||||
|
||||
/* Increment the address*/
|
||||
/* Increment the address*/
|
||||
writeaddr += 1;
|
||||
}
|
||||
}
|
||||
@@ -288,19 +288,19 @@ void sdram_writebuffer_8(uint32_t sdram_device,uint8_t* pbuffer, uint32_t writea
|
||||
void sdram_readbuffer_8(uint32_t sdram_device,uint8_t* pbuffer, uint32_t readaddr, uint32_t numbytetoread)
|
||||
{
|
||||
uint32_t temp_addr;
|
||||
|
||||
|
||||
/* select the base address according to EXMC_Bank */
|
||||
if(sdram_device == EXMC_SDRAM_DEVICE0){
|
||||
temp_addr = SDRAM_DEVICE0_ADDR;
|
||||
}else{
|
||||
temp_addr = SDRAM_DEVICE1_ADDR;
|
||||
}
|
||||
|
||||
|
||||
/* while there is data to read */
|
||||
for(; numbytetoread != 0; numbytetoread--){
|
||||
/* read a byte from the memory */
|
||||
*pbuffer++ = *(uint8_t*) (temp_addr + readaddr);
|
||||
|
||||
|
||||
/* increment the address */
|
||||
readaddr += 1;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -11,7 +11,7 @@
|
||||
* Date Author Notes
|
||||
* 2017-06-05 tanek first implementation.
|
||||
*/
|
||||
|
||||
|
||||
#include "drv_spi.h"
|
||||
|
||||
#include <board.h>
|
||||
@@ -32,7 +32,7 @@
|
||||
#ifdef DEBUG
|
||||
#define DEBUG_PRINTF(...) rt_kprintf(__VA_ARGS__)
|
||||
#else
|
||||
#define DEBUG_PRINTF(...)
|
||||
#define DEBUG_PRINTF(...)
|
||||
#endif
|
||||
|
||||
/* private rt-thread spi ops function */
|
||||
@@ -48,16 +48,16 @@ static struct rt_spi_ops gd32_spi_ops =
|
||||
static rt_err_t configure(struct rt_spi_device* device,
|
||||
struct rt_spi_configuration* configuration)
|
||||
{
|
||||
struct rt_spi_bus * spi_bus = (struct rt_spi_bus *)device->bus;
|
||||
struct rt_spi_bus * spi_bus = (struct rt_spi_bus *)device->bus;
|
||||
struct gd32f4_spi *f4_spi = (struct gd32f4_spi *)spi_bus->parent.user_data;
|
||||
|
||||
|
||||
spi_parameter_struct spi_init_struct;
|
||||
|
||||
uint32_t spi_periph = f4_spi->spi_periph;
|
||||
|
||||
|
||||
RT_ASSERT(device != RT_NULL);
|
||||
RT_ASSERT(configuration != RT_NULL);
|
||||
RT_ASSERT(device != RT_NULL);
|
||||
RT_ASSERT(configuration != RT_NULL);
|
||||
|
||||
/* data_width */
|
||||
if(configuration->data_width <= 8)
|
||||
@@ -129,7 +129,7 @@ static rt_err_t configure(struct rt_spi_device* device,
|
||||
spi_init_struct.prescale = SPI_PSC_256;
|
||||
}
|
||||
} /* baudrate */
|
||||
|
||||
|
||||
switch(configuration->mode & RT_SPI_MODE_3)
|
||||
{
|
||||
case RT_SPI_MODE_0:
|
||||
@@ -137,15 +137,15 @@ static rt_err_t configure(struct rt_spi_device* device,
|
||||
break;
|
||||
case RT_SPI_MODE_1:
|
||||
spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_2EDGE;
|
||||
break;
|
||||
break;
|
||||
case RT_SPI_MODE_2:
|
||||
spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_1EDGE;
|
||||
break;
|
||||
break;
|
||||
case RT_SPI_MODE_3:
|
||||
spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_2EDGE;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* MSB or LSB */
|
||||
if(configuration->mode & RT_SPI_MSB)
|
||||
{
|
||||
@@ -155,18 +155,18 @@ static rt_err_t configure(struct rt_spi_device* device,
|
||||
{
|
||||
spi_init_struct.endian = SPI_ENDIAN_LSB;
|
||||
}
|
||||
|
||||
|
||||
spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;
|
||||
spi_init_struct.device_mode = SPI_MASTER;
|
||||
spi_init_struct.nss = SPI_NSS_SOFT;
|
||||
|
||||
|
||||
spi_crc_off(spi_periph);
|
||||
|
||||
/* init SPI */
|
||||
spi_init(spi_periph, &spi_init_struct);
|
||||
/* Enable SPI_MASTER */
|
||||
spi_enable(spi_periph);
|
||||
|
||||
spi_enable(spi_periph);
|
||||
|
||||
return RT_EOK;
|
||||
};
|
||||
|
||||
@@ -178,9 +178,9 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
|
||||
struct gd32_spi_cs * gd32_spi_cs = device->parent.user_data;
|
||||
uint32_t spi_periph = f4_spi->spi_periph;
|
||||
|
||||
RT_ASSERT(device != NULL);
|
||||
RT_ASSERT(message != NULL);
|
||||
|
||||
RT_ASSERT(device != NULL);
|
||||
RT_ASSERT(message != NULL);
|
||||
|
||||
/* take CS */
|
||||
if(message->cs_take)
|
||||
{
|
||||
@@ -194,7 +194,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
|
||||
const rt_uint8_t * send_ptr = message->send_buf;
|
||||
rt_uint8_t * recv_ptr = message->recv_buf;
|
||||
rt_uint32_t size = message->length;
|
||||
|
||||
|
||||
DEBUG_PRINTF("spi poll transfer start: %d\n", size);
|
||||
|
||||
while(size--)
|
||||
@@ -205,12 +205,12 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
|
||||
{
|
||||
data = *send_ptr++;
|
||||
}
|
||||
|
||||
|
||||
// Todo: replace register read/write by gd32f4 lib
|
||||
//Wait until the transmit buffer is empty
|
||||
while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_TBE));
|
||||
// Send the byte
|
||||
spi_i2s_data_transmit(spi_periph, data);
|
||||
spi_i2s_data_transmit(spi_periph, data);
|
||||
|
||||
//Wait until a data is received
|
||||
while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_RBNE));
|
||||
@@ -242,7 +242,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
|
||||
//Wait until the transmit buffer is empty
|
||||
while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_TBE));
|
||||
// Send the byte
|
||||
spi_i2s_data_transmit(spi_periph, data);
|
||||
spi_i2s_data_transmit(spi_periph, data);
|
||||
|
||||
//Wait until a data is received
|
||||
while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_RBNE));
|
||||
@@ -260,7 +260,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
|
||||
/* release CS */
|
||||
if(message->cs_release)
|
||||
{
|
||||
gpio_bit_set(gd32_spi_cs->GPIOx, gd32_spi_cs->GPIO_Pin);
|
||||
gpio_bit_set(gd32_spi_cs->GPIOx, gd32_spi_cs->GPIO_Pin);
|
||||
DEBUG_PRINTF("spi release cs\n");
|
||||
}
|
||||
|
||||
@@ -274,7 +274,7 @@ static const struct gd32f4_spi spis[] = {
|
||||
#ifdef RT_USING_SPI0
|
||||
{SPI0, RCU_SPI0, &spi_bus[0]},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RT_USING_SPI1
|
||||
{SPI1, RCU_SPI1, &spi_bus[1]},
|
||||
#endif
|
||||
@@ -286,11 +286,11 @@ static const struct gd32f4_spi spis[] = {
|
||||
#ifdef RT_USING_SPI3
|
||||
{SPI3, RCU_SPI3, &spi_bus[3]},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RT_USING_SPI4
|
||||
{SPI4, RCU_SPI4, &spi_bus[4]},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RT_USING_SPI5
|
||||
{SPI5, RCU_SPI5, &spi_bus[5]},
|
||||
#endif
|
||||
@@ -310,9 +310,9 @@ rt_err_t gd32_spi_bus_register(uint32_t spi_periph,
|
||||
const char * spi_bus_name)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
RT_ASSERT(spi_bus_name != RT_NULL);
|
||||
|
||||
|
||||
for (i = 0; i < ARR_LEN(spis); i++)
|
||||
{
|
||||
if (spi_periph == spis[i].spi_periph)
|
||||
@@ -323,7 +323,7 @@ rt_err_t gd32_spi_bus_register(uint32_t spi_periph,
|
||||
return RT_EOK;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return RT_ERROR;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -36,7 +36,7 @@ struct gd32_spi_cs
|
||||
|
||||
/* public function */
|
||||
rt_err_t gd32_spi_bus_register(uint32_t spi_periph,
|
||||
//struct gd32_spi_bus * gd32_spi,
|
||||
const char * spi_bus_name);
|
||||
//struct gd32_spi_bus * gd32_spi,
|
||||
const char * spi_bus_name);
|
||||
|
||||
#endif // gd32F20X_40X_SPI_H_INCLUDED
|
||||
|
||||
@@ -32,8 +32,8 @@ static int rt_hw_spi5_init(void)
|
||||
{
|
||||
/* register spi bus */
|
||||
{
|
||||
rt_err_t result;
|
||||
|
||||
rt_err_t result;
|
||||
|
||||
rcu_periph_clock_enable(RCU_GPIOG);
|
||||
rcu_periph_clock_enable(RCU_SPI5);
|
||||
|
||||
@@ -42,36 +42,36 @@ static int rt_hw_spi5_init(void)
|
||||
gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_10|GPIO_PIN_11| GPIO_PIN_12|GPIO_PIN_13| GPIO_PIN_14);
|
||||
gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, GPIO_PIN_10|GPIO_PIN_11| GPIO_PIN_12|GPIO_PIN_13| GPIO_PIN_14);
|
||||
|
||||
result = gd32_spi_bus_register(SPI5, SPI_BUS_NAME);
|
||||
result = gd32_spi_bus_register(SPI5, SPI_BUS_NAME);
|
||||
if (result != RT_EOK)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
/* attach cs */
|
||||
{
|
||||
static struct rt_spi_device spi_device;
|
||||
static struct gd32_spi_cs spi_cs;
|
||||
rt_err_t result;
|
||||
|
||||
rt_err_t result;
|
||||
|
||||
spi_cs.GPIOx = GPIOG;
|
||||
spi_cs.GPIO_Pin = GPIO_PIN_9;
|
||||
|
||||
|
||||
/* SPI5_CS(PG9) GPIO pin configuration */
|
||||
gpio_mode_set(GPIOG, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_9);
|
||||
gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
|
||||
|
||||
|
||||
gpio_bit_set(GPIOG,GPIO_PIN_9);
|
||||
|
||||
result = rt_spi_bus_attach_device(&spi_device, SPI_FLASH_DEVICE_NAME, SPI_BUS_NAME, (void*)&spi_cs);
|
||||
if (result != RT_EOK)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
if (result != RT_EOK)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
return RT_EOK;
|
||||
return RT_EOK;
|
||||
}
|
||||
INIT_DEVICE_EXPORT(rt_hw_spi5_init);
|
||||
|
||||
@@ -83,7 +83,7 @@ static int rt_hw_spi_flash_with_sfud_init(void)
|
||||
return RT_ERROR;
|
||||
};
|
||||
|
||||
return RT_EOK;
|
||||
return RT_EOK;
|
||||
}
|
||||
INIT_COMPONENT_EXPORT(rt_hw_spi_flash_with_sfud_init)
|
||||
#endif
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
struct gd32_uart
|
||||
{
|
||||
uint32_t uart_periph; //Todo: 3bits
|
||||
IRQn_Type irqn; //Todo: 7bits
|
||||
IRQn_Type irqn; //Todo: 7bits
|
||||
rcu_periph_enum per_clk; //Todo: 5bits
|
||||
rcu_periph_enum tx_gpio_clk; //Todo: 5bits
|
||||
rcu_periph_enum rx_gpio_clk; //Todo: 5bits
|
||||
@@ -48,7 +48,7 @@ struct gd32_uart
|
||||
uint16_t rx_af; //Todo: 4bits
|
||||
uint16_t rx_pin; //Todo: 4bits
|
||||
|
||||
struct rt_serial_device * serial;
|
||||
struct rt_serial_device * serial;
|
||||
char *device_name;
|
||||
};
|
||||
|
||||
@@ -193,7 +193,7 @@ static const struct gd32_uart uarts[] = {
|
||||
"uart0",
|
||||
},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef BSP_USING_UART1
|
||||
{
|
||||
USART1, // uart peripheral index
|
||||
@@ -205,7 +205,7 @@ static const struct gd32_uart uarts[] = {
|
||||
"uart1",
|
||||
},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef BSP_USING_UART2
|
||||
{
|
||||
USART2, // uart peripheral index
|
||||
@@ -217,7 +217,7 @@ static const struct gd32_uart uarts[] = {
|
||||
"uart2",
|
||||
},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef BSP_USING_UART3
|
||||
{
|
||||
UART3, // uart peripheral index
|
||||
@@ -229,7 +229,7 @@ static const struct gd32_uart uarts[] = {
|
||||
"uart3",
|
||||
},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef BSP_USING_UART4
|
||||
{
|
||||
UART4, // uart peripheral index
|
||||
@@ -253,7 +253,7 @@ static const struct gd32_uart uarts[] = {
|
||||
"uart5",
|
||||
},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef BSP_USING_UART6
|
||||
{
|
||||
UART6, // uart peripheral index
|
||||
@@ -309,7 +309,7 @@ void gd32_uart_gpio_init(struct gd32_uart *uart)
|
||||
/* configure USART Rx as alternate function push-pull */
|
||||
gpio_mode_set(uart->rx_port, GPIO_MODE_AF, GPIO_PUPD_PULLUP, uart->rx_pin);
|
||||
gpio_output_options_set(uart->rx_port, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, uart->rx_pin);
|
||||
|
||||
|
||||
NVIC_SetPriority(uart->irqn, 0);
|
||||
NVIC_EnableIRQ(uart->irqn);
|
||||
}
|
||||
@@ -322,9 +322,9 @@ static rt_err_t gd32_configure(struct rt_serial_device *serial, struct serial_co
|
||||
RT_ASSERT(cfg != RT_NULL);
|
||||
|
||||
uart = (struct gd32_uart *)serial->parent.user_data;
|
||||
|
||||
|
||||
gd32_uart_gpio_init(uart);
|
||||
|
||||
|
||||
usart_baudrate_set(uart->uart_periph, cfg->baud_rate);
|
||||
|
||||
switch (cfg->data_bits)
|
||||
@@ -404,7 +404,7 @@ static int gd32_putc(struct rt_serial_device *serial, char ch)
|
||||
|
||||
usart_data_transmit(uart->uart_periph, ch);
|
||||
while((usart_flag_get(uart->uart_periph, USART_FLAG_TC) == RESET));
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -456,7 +456,7 @@ int gd32_hw_usart_init(void)
|
||||
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT;
|
||||
int i;
|
||||
|
||||
|
||||
|
||||
for (i = 0; i < sizeof(uarts) / sizeof(uarts[0]); i++)
|
||||
{
|
||||
uarts[i].serial->ops = &gd32_uart_ops;
|
||||
|
||||
@@ -17,23 +17,23 @@
|
||||
#endif
|
||||
|
||||
#include "gd32f4xx.h"
|
||||
|
||||
|
||||
/* exported types */
|
||||
typedef enum
|
||||
typedef enum
|
||||
{
|
||||
LED1 = 0,
|
||||
LED2 = 1,
|
||||
LED3 = 2
|
||||
} led_typedef_enum;
|
||||
|
||||
typedef enum
|
||||
typedef enum
|
||||
{
|
||||
KEY_WAKEUP = 0,
|
||||
KEY_TAMPER = 1,
|
||||
KEY_USER = 2
|
||||
} key_typedef_enum;
|
||||
|
||||
typedef enum
|
||||
typedef enum
|
||||
{
|
||||
KEY_MODE_GPIO = 0,
|
||||
KEY_MODE_EXTI = 1
|
||||
@@ -45,11 +45,11 @@ typedef enum
|
||||
#define LED1_PIN GPIO_PIN_4
|
||||
#define LED1_GPIO_PORT GPIOD
|
||||
#define LED1_GPIO_CLK RCU_GPIOD
|
||||
|
||||
|
||||
#define LED2_PIN GPIO_PIN_5
|
||||
#define LED2_GPIO_PORT GPIOD
|
||||
#define LED2_GPIO_CLK RCU_GPIOD
|
||||
|
||||
|
||||
#define LED3_PIN GPIO_PIN_3
|
||||
#define LED3_GPIO_PORT GPIOG
|
||||
#define LED3_GPIO_CLK RCU_GPIOG
|
||||
@@ -83,7 +83,7 @@ typedef enum
|
||||
#define WAKEUP_KEY_EXTI_LINE EXTI_0
|
||||
#define WAKEUP_KEY_EXTI_PORT_SOURCE EXTI_SOURCE_GPIOA
|
||||
#define WAKEUP_KEY_EXTI_PIN_SOURCE EXTI_SOURCE_PIN0
|
||||
#define WAKEUP_KEY_EXTI_IRQn EXTI0_IRQn
|
||||
#define WAKEUP_KEY_EXTI_IRQn EXTI0_IRQn
|
||||
|
||||
/* user push-button */
|
||||
#define USER_KEY_PIN GPIO_PIN_14
|
||||
|
||||
@@ -108,8 +108,8 @@ void lcd_spi_config(void)
|
||||
gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_13|GPIO_PIN_14);
|
||||
gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13|GPIO_PIN_14);
|
||||
spi_i2s_deinit(SPI5);
|
||||
|
||||
if(0 == (SPI_CTL0(LCD_SPI) & SPI_CTL0_SPIEN)){
|
||||
|
||||
if(0 == (SPI_CTL0(LCD_SPI) & SPI_CTL0_SPIEN)){
|
||||
spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;
|
||||
spi_init_struct.device_mode = SPI_MASTER;
|
||||
spi_init_struct.frame_size = SPI_FRAMESIZE_8BIT;
|
||||
@@ -155,7 +155,7 @@ void lcd_data_write(uint8_t value)
|
||||
/* set LCD_RS to send data */
|
||||
lcd_ctrl_line_set(LCD_RS_GPIO_PORT, LCD_RS_PIN);
|
||||
|
||||
/* reset LCD control line and send data */
|
||||
/* reset LCD control line and send data */
|
||||
lcd_disable();
|
||||
while(RESET == spi_i2s_flag_get(LCD_SPI, SPI_FLAG_TBE)) ;
|
||||
|
||||
@@ -228,80 +228,80 @@ void lcd_power_on(void)
|
||||
}
|
||||
/**
|
||||
* @brief New Version 3.5" TFT RGB Hardware needs add this initilize funtion ---By xufei 2016.10.21
|
||||
Modified by GAO HAIYANG, test pass, 17, Nov, 2016
|
||||
Modified by GAO HAIYANG, test pass, 17, Nov, 2016
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
void lcd_power_on3(void)
|
||||
{
|
||||
lcd_command_write(0xC0);//power control1 command/w/
|
||||
lcd_data_write(0x0A); // P-Gamma level//4.1875v
|
||||
lcd_data_write(0x0A); // N-Gamma level
|
||||
lcd_command_write(0xC1); // BT & VC Setting//power contrl2 command/w/
|
||||
lcd_data_write(0x41);
|
||||
lcd_data_write(0x07); // VCI1 = 2.5V
|
||||
lcd_command_write(0xC2); // DC1.DC0 Setting//power control3 for normal mode
|
||||
lcd_data_write(0x33);
|
||||
lcd_command_write(0xC5);//VCOM control
|
||||
lcd_data_write(0x00); //NV memory is not programmed
|
||||
lcd_data_write(0x42); // VCM Setting
|
||||
lcd_data_write(0x80); // VCM Register Enable
|
||||
lcd_command_write(0xB0); //interface mode control //Polarity Setting
|
||||
lcd_data_write(0x02);
|
||||
lcd_command_write(0xB1);//frame rate control for normal mode
|
||||
lcd_data_write(0xB0); // Frame Rate Setting//70 frame per second//no division for internal clocks
|
||||
lcd_data_write(0x11);//17 clocks per line period for idle mode at cpu interface
|
||||
lcd_command_write(0xB4);//dispaly inversion control
|
||||
lcd_data_write(0x00); // disable Z-inversion , column inversion
|
||||
lcd_command_write(0xB6); //display function control// RM.DM Setting
|
||||
lcd_data_write(0x70);////0xF0
|
||||
lcd_data_write(0x02);//direction of gate scan: G1->G480 one by one, source scan: S1->S960, scan cycle if interval scan in non-display area
|
||||
lcd_data_write(0x3B); // number of lines to drive LCD: 8*(0x3C) = 480
|
||||
lcd_command_write(0xB7); // Entry Mode
|
||||
lcd_data_write(0x07); // disable low voltage detection, normal display,
|
||||
lcd_command_write(0xF0); // Enter ENG , must be set before gamma setting
|
||||
lcd_data_write(0x36);
|
||||
lcd_data_write(0xA5);
|
||||
lcd_data_write(0xD3);
|
||||
lcd_command_write(0xE5); // Open gamma function , must be set before gamma setting
|
||||
lcd_data_write(0x80);
|
||||
lcd_command_write(0xE5); // Page 1
|
||||
lcd_data_write(0x01);
|
||||
lcd_command_write(0XB3); // WEMODE=0(Page 1) , pixels over window setting will be ignored.//frame rate control in partial mode/full colors
|
||||
lcd_data_write(0x00);
|
||||
lcd_command_write(0xE5); // Page 0
|
||||
lcd_data_write(0x00);
|
||||
lcd_command_write(0xF0); // Exit ENG , must be set before gamma setting
|
||||
lcd_data_write(0x36);
|
||||
lcd_data_write(0xA5);
|
||||
lcd_data_write(0x53);
|
||||
lcd_command_write(0xE0); // Gamma setting
|
||||
//y fine adjustment register for positive polarity
|
||||
lcd_data_write(0x00);
|
||||
lcd_data_write(0x35);
|
||||
lcd_data_write(0x33);
|
||||
//y gradient adjustment register for positive polarity
|
||||
lcd_data_write(0x00);
|
||||
//y amplitude adjustment register for positive polarity
|
||||
lcd_data_write(0x00);
|
||||
lcd_data_write(0x00);
|
||||
//y fine adjustment register for negative polarity
|
||||
lcd_data_write(0x00);
|
||||
lcd_data_write(0x35);
|
||||
lcd_data_write(0x33);
|
||||
//y gradient adjustment register for negative polarity
|
||||
lcd_data_write(0x00);
|
||||
//y amplitude adjustment register for negative polarity
|
||||
lcd_data_write(0x00);
|
||||
lcd_data_write(0x00);
|
||||
lcd_command_write(0x36); // memory data access control //
|
||||
lcd_data_write(0x48);//
|
||||
lcd_command_write(0x3A); // interface pixel format setting
|
||||
lcd_data_write(0x55);//16-bits
|
||||
lcd_command_write(0x11); // Exit sleep mode
|
||||
lcd_command_write(0x29); // Display on
|
||||
lcd_command_write(0xC0);//power control1 command/w/
|
||||
lcd_data_write(0x0A); // P-Gamma level//4.1875v
|
||||
lcd_data_write(0x0A); // N-Gamma level
|
||||
lcd_command_write(0xC1); // BT & VC Setting//power contrl2 command/w/
|
||||
lcd_data_write(0x41);
|
||||
lcd_data_write(0x07); // VCI1 = 2.5V
|
||||
lcd_command_write(0xC2); // DC1.DC0 Setting//power control3 for normal mode
|
||||
lcd_data_write(0x33);
|
||||
lcd_command_write(0xC5);//VCOM control
|
||||
lcd_data_write(0x00); //NV memory is not programmed
|
||||
lcd_data_write(0x42); // VCM Setting
|
||||
lcd_data_write(0x80); // VCM Register Enable
|
||||
lcd_command_write(0xB0); //interface mode control //Polarity Setting
|
||||
lcd_data_write(0x02);
|
||||
lcd_command_write(0xB1);//frame rate control for normal mode
|
||||
lcd_data_write(0xB0); // Frame Rate Setting//70 frame per second//no division for internal clocks
|
||||
lcd_data_write(0x11);//17 clocks per line period for idle mode at cpu interface
|
||||
lcd_command_write(0xB4);//dispaly inversion control
|
||||
lcd_data_write(0x00); // disable Z-inversion , column inversion
|
||||
lcd_command_write(0xB6); //display function control// RM.DM Setting
|
||||
lcd_data_write(0x70);////0xF0
|
||||
lcd_data_write(0x02);//direction of gate scan: G1->G480 one by one, source scan: S1->S960, scan cycle if interval scan in non-display area
|
||||
lcd_data_write(0x3B); // number of lines to drive LCD: 8*(0x3C) = 480
|
||||
lcd_command_write(0xB7); // Entry Mode
|
||||
lcd_data_write(0x07); // disable low voltage detection, normal display,
|
||||
lcd_command_write(0xF0); // Enter ENG , must be set before gamma setting
|
||||
lcd_data_write(0x36);
|
||||
lcd_data_write(0xA5);
|
||||
lcd_data_write(0xD3);
|
||||
lcd_command_write(0xE5); // Open gamma function , must be set before gamma setting
|
||||
lcd_data_write(0x80);
|
||||
lcd_command_write(0xE5); // Page 1
|
||||
lcd_data_write(0x01);
|
||||
lcd_command_write(0XB3); // WEMODE=0(Page 1) , pixels over window setting will be ignored.//frame rate control in partial mode/full colors
|
||||
lcd_data_write(0x00);
|
||||
lcd_command_write(0xE5); // Page 0
|
||||
lcd_data_write(0x00);
|
||||
lcd_command_write(0xF0); // Exit ENG , must be set before gamma setting
|
||||
lcd_data_write(0x36);
|
||||
lcd_data_write(0xA5);
|
||||
lcd_data_write(0x53);
|
||||
lcd_command_write(0xE0); // Gamma setting
|
||||
//y fine adjustment register for positive polarity
|
||||
lcd_data_write(0x00);
|
||||
lcd_data_write(0x35);
|
||||
lcd_data_write(0x33);
|
||||
//y gradient adjustment register for positive polarity
|
||||
lcd_data_write(0x00);
|
||||
//y amplitude adjustment register for positive polarity
|
||||
lcd_data_write(0x00);
|
||||
lcd_data_write(0x00);
|
||||
//y fine adjustment register for negative polarity
|
||||
lcd_data_write(0x00);
|
||||
lcd_data_write(0x35);
|
||||
lcd_data_write(0x33);
|
||||
//y gradient adjustment register for negative polarity
|
||||
lcd_data_write(0x00);
|
||||
//y amplitude adjustment register for negative polarity
|
||||
lcd_data_write(0x00);
|
||||
lcd_data_write(0x00);
|
||||
lcd_command_write(0x36); // memory data access control //
|
||||
lcd_data_write(0x48);//
|
||||
lcd_command_write(0x3A); // interface pixel format setting
|
||||
lcd_data_write(0x55);//16-bits
|
||||
lcd_command_write(0x11); // Exit sleep mode
|
||||
lcd_command_write(0x29); // Display on
|
||||
|
||||
delay(10);
|
||||
delay(10);
|
||||
}
|
||||
/*!
|
||||
\brief insert a delay time
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
#define GD32F450Z_LCD_EVAL_H
|
||||
|
||||
#include "gd32f450z_eval.h"
|
||||
|
||||
|
||||
#define LCD_CS_PIN GPIO_PIN_11
|
||||
#define LCD_CS_GPIO_PORT GPIOD
|
||||
#define LCD_CS_GPIO_CLK RCU_GPIOD
|
||||
#define LCD_CS_GPIO_CLK RCU_GPIOD
|
||||
|
||||
#define LCD_RS_PIN GPIO_PIN_3
|
||||
#define LCD_RS_GPIO_PORT GPIOE
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#define LCD_SPI_MOSI_PIN GPIO_PIN_14
|
||||
#define LCD_SPI_MOSI_GPIO_PORT GPIOG
|
||||
#define LCD_SPI_MOSI_GPIO_CLK RCU_GPIOG
|
||||
#define LCD_SPI_MOSI_GPIO_CLK RCU_GPIOG
|
||||
|
||||
#define LCD_SPI SPI5
|
||||
#define LCD_SPI_CLK RCU_SPI5
|
||||
@@ -52,4 +52,4 @@ void lcd_data_write(uint8_t value);
|
||||
/* configure the LCD based on the power on sequence */
|
||||
void lcd_power_on(void);
|
||||
void lcd_power_on3(void);
|
||||
#endif /* GD32F450Z_LCD_EVAL_H */
|
||||
#endif /* GD32F450Z_LCD_EVAL_H */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
@@ -75,7 +75,7 @@ void rt_hw_board_init()
|
||||
rt_console_set_device(RT_CONSOLE_DEVICE_NAME);
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_HEAP
|
||||
#ifdef RT_USING_HEAP
|
||||
rt_system_heap_init((void*)HEAP_BEGIN, (void*)HEAP_END);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
@@ -15,7 +15,7 @@
|
||||
#include <gd32e230.h>
|
||||
|
||||
// <o> Internal SRAM memory size[Kbytes] <8-64>
|
||||
// <i>Default: 64
|
||||
// <i>Default: 64
|
||||
#ifdef __ICCARM__
|
||||
// Use *.icf ram symbal, to avoid hardcode.
|
||||
extern char __ICFEDIT_region_RAM_end__;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
@@ -29,8 +29,8 @@ struct pin_index
|
||||
rcu_periph_enum clk;
|
||||
rt_uint32_t gpio_periph;
|
||||
rt_uint32_t pin;
|
||||
rt_uint32_t port_src;
|
||||
rt_uint32_t pin_src;
|
||||
rt_uint32_t port_src;
|
||||
rt_uint32_t pin_src;
|
||||
};
|
||||
|
||||
static const struct pin_index pins[] =
|
||||
@@ -38,8 +38,8 @@ static const struct pin_index pins[] =
|
||||
__GD32_PIN_DEFAULT,
|
||||
__GD32_PIN(2, F, 0),
|
||||
__GD32_PIN(3, F, 1),
|
||||
__GD32_PIN_DEFAULT,
|
||||
__GD32_PIN_DEFAULT,
|
||||
__GD32_PIN_DEFAULT,
|
||||
__GD32_PIN_DEFAULT,
|
||||
__GD32_PIN(6, A, 0),
|
||||
__GD32_PIN(7, A, 1),
|
||||
__GD32_PIN(8, A, 2),
|
||||
@@ -51,7 +51,7 @@ static const struct pin_index pins[] =
|
||||
__GD32_PIN(14, B, 0),
|
||||
__GD32_PIN(15, B, 1),
|
||||
__GD32_PIN(16, B, 2),
|
||||
__GD32_PIN_DEFAULT,
|
||||
__GD32_PIN_DEFAULT,
|
||||
__GD32_PIN(18, A, 8),
|
||||
__GD32_PIN(19, A, 9),
|
||||
__GD32_PIN(20, A, 10),
|
||||
@@ -136,8 +136,8 @@ void gd32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
|
||||
{
|
||||
const struct pin_index *index;
|
||||
rt_uint32_t pin_mode;
|
||||
rt_uint32_t otype;
|
||||
rt_uint32_t pull_up_down;
|
||||
rt_uint32_t otype;
|
||||
rt_uint32_t pull_up_down;
|
||||
index = get_pin(pin);
|
||||
if (index == RT_NULL)
|
||||
{
|
||||
@@ -147,9 +147,9 @@ void gd32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
|
||||
/* GPIO Periph clock enable */
|
||||
rcu_periph_clock_enable(index->clk);
|
||||
pin_mode = GPIO_MODE_OUTPUT;
|
||||
otype = GPIO_OTYPE_PP;
|
||||
pull_up_down = GPIO_PUPD_NONE;
|
||||
|
||||
otype = GPIO_OTYPE_PP;
|
||||
pull_up_down = GPIO_PUPD_NONE;
|
||||
|
||||
switch(mode)
|
||||
{
|
||||
case PIN_MODE_OUTPUT:
|
||||
@@ -157,7 +157,7 @@ void gd32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
|
||||
break;
|
||||
case PIN_MODE_OUTPUT_OD:
|
||||
/* output setting: od. */
|
||||
otype = GPIO_OTYPE_OD;
|
||||
otype = GPIO_OTYPE_OD;
|
||||
break;
|
||||
case PIN_MODE_INPUT:
|
||||
/* input setting: not pull. */
|
||||
@@ -166,20 +166,20 @@ void gd32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
|
||||
case PIN_MODE_INPUT_PULLUP:
|
||||
/* input setting: pull up. */
|
||||
pin_mode = GPIO_MODE_INPUT;
|
||||
pull_up_down = GPIO_PUPD_PULLUP;
|
||||
pull_up_down = GPIO_PUPD_PULLUP;
|
||||
break;
|
||||
case PIN_MODE_INPUT_PULLDOWN:
|
||||
/* input setting: pull down. */
|
||||
pin_mode = GPIO_MODE_INPUT;
|
||||
pull_up_down = GPIO_PUPD_PULLDOWN;
|
||||
pin_mode = GPIO_MODE_INPUT;
|
||||
pull_up_down = GPIO_PUPD_PULLDOWN;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
gpio_mode_set(index->gpio_periph, pin_mode, pull_up_down, index->pin);
|
||||
gpio_mode_set(index->gpio_periph, pin_mode, pull_up_down, index->pin);
|
||||
gpio_output_options_set(index->gpio_periph, otype, GPIO_OSPEED_50MHZ, index->pin);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void gd32_pin_write(rt_device_t dev, rt_base_t pin, rt_base_t value)
|
||||
@@ -333,7 +333,7 @@ rt_err_t gd32_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_
|
||||
return RT_EINVAL;
|
||||
}
|
||||
irqmap = &pin_irq_map[hdr_index];
|
||||
|
||||
|
||||
switch (pin_irq_hdr_tab[hdr_index].mode)
|
||||
{
|
||||
case PIN_IRQ_MODE_RISING:
|
||||
@@ -354,14 +354,14 @@ rt_err_t gd32_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_
|
||||
|
||||
/* enable and set interrupt priority */
|
||||
nvic_irq_enable(irqmap->irqno, 5U);
|
||||
|
||||
|
||||
/* connect EXTI line to GPIO pin */
|
||||
syscfg_exti_line_config(index->port_src, index->pin_src);
|
||||
syscfg_exti_line_config(index->port_src, index->pin_src);
|
||||
|
||||
/* configure EXTI line */
|
||||
exti_init((exti_line_enum)(index->pin), EXTI_INTERRUPT, trigger_mode);
|
||||
exti_interrupt_flag_clear((exti_line_enum)(index->pin));
|
||||
|
||||
|
||||
rt_hw_interrupt_enable(level);
|
||||
}
|
||||
else if (enabled == PIN_IRQ_DISABLE)
|
||||
@@ -396,7 +396,7 @@ int rt_hw_pin_init(void)
|
||||
int result;
|
||||
|
||||
result = rt_device_pin_register("pin", &_gd32_pin_ops, RT_NULL);
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
INIT_BOARD_EXPORT(rt_hw_pin_init);
|
||||
@@ -415,7 +415,7 @@ void GD32_GPIO_EXTI_IRQHandler(rt_int8_t exti_line)
|
||||
{
|
||||
pin_irq_hdr(exti_line);
|
||||
exti_interrupt_flag_clear((exti_line_enum)(1 << exti_line));
|
||||
}
|
||||
}
|
||||
}
|
||||
void EXTI0_IRQHandler(void)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
@@ -155,7 +155,7 @@ static int gd32_i2c_read(rt_uint32_t i2c_periph, rt_uint16_t slave_address, rt_u
|
||||
*p_buffer = i2c_data_receive(i2c_periph);
|
||||
|
||||
/* point to the next location where the byte read will be saved */
|
||||
p_buffer++;
|
||||
p_buffer++;
|
||||
|
||||
/* decrement the read bytes counter */
|
||||
data_byte--;
|
||||
@@ -264,7 +264,7 @@ static rt_size_t gd32_i2c_xfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ret = i;
|
||||
|
||||
out:
|
||||
@@ -274,7 +274,7 @@ out:
|
||||
}
|
||||
|
||||
static const struct rt_i2c_bus_device_ops i2c_ops =
|
||||
{
|
||||
{
|
||||
gd32_i2c_xfer,
|
||||
RT_NULL,
|
||||
RT_NULL
|
||||
@@ -311,7 +311,7 @@ int rt_hw_i2c_init(void)
|
||||
|
||||
i2c_device.priv = (void *)&_i2c_bit_ops;
|
||||
rt_i2c_bit_add_bus(&i2c_device, I2C_BUS_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
#else /* register hardware I2C */
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
@@ -115,7 +115,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat
|
||||
spi_init_struct.prescale = SPI_PSC_256;
|
||||
}
|
||||
} /* baudrate */
|
||||
|
||||
|
||||
switch(configuration->mode & RT_SPI_MODE_3)
|
||||
{
|
||||
case RT_SPI_MODE_0:
|
||||
@@ -131,7 +131,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat
|
||||
spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_2EDGE;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* MSB or LSB */
|
||||
if(configuration->mode & RT_SPI_MSB)
|
||||
{
|
||||
@@ -141,7 +141,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat
|
||||
{
|
||||
spi_init_struct.endian = SPI_ENDIAN_LSB;
|
||||
}
|
||||
|
||||
|
||||
spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX;
|
||||
spi_init_struct.device_mode = SPI_MASTER;
|
||||
spi_init_struct.nss = SPI_NSS_SOFT;
|
||||
@@ -177,7 +177,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
|
||||
const rt_uint8_t * send_ptr = message->send_buf;
|
||||
rt_uint8_t * recv_ptr = message->recv_buf;
|
||||
rt_uint32_t size = message->length;
|
||||
|
||||
|
||||
DEBUG_PRINTF("spi poll transfer start: %d\n", size);
|
||||
|
||||
while(size--)
|
||||
@@ -188,7 +188,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes
|
||||
{
|
||||
data = *send_ptr++;
|
||||
}
|
||||
|
||||
|
||||
// Todo: replace register read/write by gd32f3 lib
|
||||
//Wait until the transmit buffer is empty
|
||||
while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_TBE));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
@@ -41,7 +41,7 @@ struct gd32_uart
|
||||
uint16_t tx_pin;
|
||||
uint32_t rx_port;
|
||||
uint32_t rx_af;
|
||||
uint16_t rx_pin;
|
||||
uint16_t rx_pin;
|
||||
|
||||
struct rt_serial_device * serial;
|
||||
char *device_name;
|
||||
@@ -93,7 +93,7 @@ static const struct gd32_uart uarts[] = {
|
||||
"uart0",
|
||||
},
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef RT_USING_USART1
|
||||
{
|
||||
USART1, // uart peripheral index
|
||||
@@ -122,18 +122,18 @@ void gd32_uart_gpio_init(struct gd32_uart *uart)
|
||||
/* enable USART clock */
|
||||
rcu_periph_clock_enable(uart->tx_gpio_clk);
|
||||
rcu_periph_clock_enable(uart->rx_gpio_clk);
|
||||
rcu_periph_clock_enable(uart->per_clk);
|
||||
rcu_periph_clock_enable(uart->per_clk);
|
||||
|
||||
/* connect port to USARTx_Tx */
|
||||
gpio_af_set(uart->tx_port, uart->tx_af, uart->tx_pin);
|
||||
gpio_mode_set(uart->tx_port, GPIO_MODE_AF, GPIO_PUPD_NONE, uart->tx_pin);
|
||||
gpio_output_options_set(uart->tx_port, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, uart->tx_pin);
|
||||
|
||||
|
||||
/* connect port to USARTx_Rx */
|
||||
gpio_af_set(uart->rx_port, uart->rx_af, uart->rx_pin);
|
||||
gpio_mode_set(uart->rx_port, GPIO_MODE_AF, GPIO_PUPD_NONE, uart->rx_pin);
|
||||
gpio_output_options_set(uart->rx_port, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, uart->rx_pin);
|
||||
|
||||
|
||||
NVIC_SetPriority(uart->irqn, 0);
|
||||
NVIC_EnableIRQ(uart->irqn);
|
||||
}
|
||||
@@ -146,9 +146,9 @@ static rt_err_t gd32_configure(struct rt_serial_device *serial, struct serial_co
|
||||
RT_ASSERT(cfg != RT_NULL);
|
||||
|
||||
uart = (struct gd32_uart *)serial->parent.user_data;
|
||||
|
||||
|
||||
gd32_uart_gpio_init(uart);
|
||||
|
||||
|
||||
usart_baudrate_set(uart->uart_periph, cfg->baud_rate);
|
||||
|
||||
switch (cfg->data_bits)
|
||||
@@ -228,7 +228,7 @@ static int gd32_putc(struct rt_serial_device *serial, char ch)
|
||||
|
||||
usart_data_transmit(uart->uart_periph, ch);
|
||||
while((usart_flag_get(uart->uart_periph, USART_FLAG_TC) == RESET));
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2019, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*!
|
||||
\file gd32e230_libopt.h
|
||||
\brief library optional for gd32e230
|
||||
|
||||
|
||||
\version 2018-06-19, V1.0.0, firmware for GD32E230
|
||||
*/
|
||||
|
||||
@@ -10,27 +10,27 @@
|
||||
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
3. Neither the name of the copyright holder nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software without
|
||||
3. Neither the name of the copyright holder nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software without
|
||||
specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2018, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2018, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2018, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
|
||||
@@ -8,27 +8,27 @@
|
||||
/*
|
||||
Copyright (c) 2019, GigaDevice Semiconductor Inc.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
3. Neither the name of the copyright holder nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software without
|
||||
3. Neither the name of the copyright holder nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software without
|
||||
specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2018, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
#define EXTI_(x) BIT(x)
|
||||
|
||||
static const struct pin_index pins[] =
|
||||
static const struct pin_index pins[] =
|
||||
{
|
||||
#if defined(GPIOA)
|
||||
__GD32VF_PIN(0 , A, 0 ),
|
||||
@@ -126,7 +126,7 @@ static const struct pin_irq_map pin_irq_map[] =
|
||||
{GPIO_PIN_12, EXTI10_15_IRQn},
|
||||
{GPIO_PIN_13, EXTI10_15_IRQn},
|
||||
{GPIO_PIN_14, EXTI10_15_IRQn},
|
||||
{GPIO_PIN_15, EXTI10_15_IRQn},
|
||||
{GPIO_PIN_15, EXTI10_15_IRQn},
|
||||
};
|
||||
|
||||
static struct rt_pin_irq_hdr pin_irq_hdr_tab[] =
|
||||
@@ -406,11 +406,11 @@ static rt_err_t gd32vf_pin_irq_enable(struct rt_device *device, rt_base_t pin,
|
||||
gpio_bit_reset(index->gpio_periph, index->pin);
|
||||
|
||||
pin_irq_enable_mask &= ~irqmap->pinbit;
|
||||
|
||||
|
||||
eclic_irq_disable(irqmap->irqno);
|
||||
exti_interrupt_flag_clear(EXTI_(index->pin));
|
||||
|
||||
rt_hw_interrupt_enable(level);
|
||||
|
||||
rt_hw_interrupt_enable(level);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2018, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
@@ -38,4 +38,4 @@ int rt_hw_gpio_init(void);
|
||||
|
||||
#endif /* __DRV_GPIO__H__ */
|
||||
|
||||
/******************* end of file *******************/
|
||||
/******************* end of file *******************/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2018, RT-Thread Development Team
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
@@ -15,7 +15,7 @@
|
||||
#if !defined(BSP_USING_UART0) && !defined(BSP_USING_UART1) && !defined(BSP_USING_UART2) \
|
||||
&& !defined(BSP_USING_UART3) && !defined(BSP_USING_UART4) && !defined(BSP_USING_UART5)
|
||||
#error "Please define at least one BSP_USING_UARTx"
|
||||
/* this driver can be disabled at menuconfig ¡ú RT-Thread Components ¡ú Device Drivers */
|
||||
/* this driver can be disabled at menuconfig → RT-Thread Components → Device Drivers */
|
||||
#endif
|
||||
|
||||
struct gd32_usart {
|
||||
|
||||
Reference in New Issue
Block a user