mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-08-18 20:48:41 +08:00
add stm32f2xx eth driver
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1649 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
+825
-751
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+90
-4
@@ -45,6 +45,17 @@ struct stm32_serial_device uart1 =
|
||||
struct rt_device uart1_device;
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART6
|
||||
struct stm32_serial_int_rx uart6_int_rx;
|
||||
struct stm32_serial_device uart6 =
|
||||
{
|
||||
USART6,
|
||||
&uart6_int_rx,
|
||||
RT_NULL
|
||||
};
|
||||
struct rt_device uart6_device;
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART2
|
||||
struct stm32_serial_int_rx uart2_int_rx;
|
||||
struct stm32_serial_device uart2 =
|
||||
@@ -103,6 +114,14 @@ struct rt_device uart3_device;
|
||||
#define UART3_TX_DMA DMA1_Channel2
|
||||
#define UART3_RX_DMA DMA1_Channel3
|
||||
|
||||
/* USART6_REMAP = 0 */
|
||||
#define UART6_GPIO_TX GPIO_Pin_6
|
||||
#define UART6_GPIO_RX GPIO_Pin_7
|
||||
#define UART6_GPIO GPIOC
|
||||
#define RCC_APBPeriph_UART6 RCC_APB2Periph_USART6
|
||||
//#define UART1_TX_DMA DMA1_Channel?
|
||||
//#define UART1_RX_DMA DMA1_Channel?
|
||||
|
||||
static void RCC_Configuration(void)
|
||||
{
|
||||
#ifdef RT_USING_UART1
|
||||
@@ -110,6 +129,12 @@ static void RCC_Configuration(void)
|
||||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART6
|
||||
/* Enable USART6 and GPIOC clocks */
|
||||
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6, ENABLE);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void GPIO_Configuration(void)
|
||||
@@ -120,13 +145,26 @@ static void GPIO_Configuration(void)
|
||||
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF;
|
||||
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
|
||||
GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
|
||||
GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
|
||||
GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
|
||||
|
||||
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10;
|
||||
GPIO_Init(GPIOA,&GPIO_InitStruct);
|
||||
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
|
||||
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART6
|
||||
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF;
|
||||
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
|
||||
GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
|
||||
GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP;
|
||||
|
||||
GPIO_InitStruct.GPIO_Pin=UART6_GPIO_TX|UART6_GPIO_RX;
|
||||
GPIO_Init(UART6_GPIO,&GPIO_InitStruct);
|
||||
|
||||
GPIO_PinAFConfig(UART6_GPIO, GPIO_PinSource6, GPIO_AF_USART6);
|
||||
GPIO_PinAFConfig(UART6_GPIO, GPIO_PinSource7, GPIO_AF_USART6);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -142,6 +180,15 @@ static void NVIC_Configuration(void)
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||
NVIC_Init(&NVIC_InitStructure);
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART6
|
||||
/* Enable the USART1 Interrupt */
|
||||
NVIC_InitStructure.NVIC_IRQChannel = USART6_IRQn;
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||
NVIC_Init(&NVIC_InitStructure);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -160,7 +207,7 @@ void rt_hw_usart_init()
|
||||
|
||||
/* uart init */
|
||||
#ifdef RT_USING_UART1
|
||||
USART_DeInit(USART1);
|
||||
USART_DeInit(USART1);
|
||||
USART_InitStructure.USART_BaudRate = 115200;
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
||||
USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
||||
@@ -181,8 +228,33 @@ void rt_hw_usart_init()
|
||||
USART_Cmd(USART1, ENABLE);
|
||||
USART_ClearFlag(USART1,USART_FLAG_TXE);
|
||||
#endif
|
||||
|
||||
/* uart init */
|
||||
#ifdef RT_USING_UART6
|
||||
USART_DeInit(USART6);
|
||||
USART_InitStructure.USART_BaudRate = 115200;
|
||||
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
|
||||
USART_InitStructure.USART_StopBits = USART_StopBits_1;
|
||||
USART_InitStructure.USART_Parity = USART_Parity_No ;
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
|
||||
|
||||
USART_Init(USART6, &USART_InitStructure);
|
||||
|
||||
/* register uart1 */
|
||||
rt_hw_serial_register(&uart6_device, "uart6",
|
||||
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX | RT_DEVICE_FLAG_STREAM,
|
||||
&uart6);
|
||||
|
||||
/* enable interrupt */
|
||||
USART_ITConfig(USART6, USART_IT_RXNE, ENABLE);
|
||||
/* Enable USART6 */
|
||||
USART_Cmd(USART6, ENABLE);
|
||||
USART_ClearFlag(USART6,USART_FLAG_TXE);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef RT_USING_UART1
|
||||
void USART1_IRQHandler()
|
||||
{
|
||||
/* enter interrupt */
|
||||
@@ -193,3 +265,17 @@ void USART1_IRQHandler()
|
||||
/* leave interrupt */
|
||||
rt_interrupt_leave();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_UART6
|
||||
void USART6_IRQHandler()
|
||||
{
|
||||
/* enter interrupt */
|
||||
rt_interrupt_enter();
|
||||
|
||||
rt_hw_serial_isr(&uart6_device);
|
||||
|
||||
/* leave interrupt */
|
||||
rt_interrupt_leave();
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user