diff --git a/bsp/stm3210/project_107/startup.c b/bsp/stm3210/project_107/startup.c index 0ee8ddbde4..b6c561fc25 100644 --- a/bsp/stm3210/project_107/startup.c +++ b/bsp/stm3210/project_107/startup.c @@ -25,22 +25,12 @@ /*@{*/ -#ifdef RT_USING_LWIP -#ifdef STM32F10X_CL - extern void rt_hw_stm32_eth_init(void); -#else - #include "enc28j60.h" -#endif -#include -#endif - extern int rt_application_init(void); #ifdef RT_USING_FINSH extern void finsh_system_init(void); extern void finsh_set_device(const char* device); #endif -/* bss end definitions for heap init */ #ifdef __CC_ARM extern int Image$$RW_IRAM1$$ZI$$Limit; #elif __ICCARM__ @@ -117,17 +107,6 @@ void rtthread_startup(void) #else rt_hw_msd_init(); #endif -#endif - -#ifdef RT_USING_LWIP - eth_system_device_init(); - - /* register ethernetif device */ -#ifdef STM32F10X_CL - rt_hw_stm32_eth_init(); -#else - rt_hw_enc28j60_init(); -#endif #endif rt_hw_rtc_init(); @@ -144,6 +123,9 @@ void rtthread_startup(void) finsh_set_device(FINSH_DEVICE_NAME); #endif + /* init timer thread */ + rt_system_timer_thread_init(); + /* init idle thread */ rt_thread_idle_init(); diff --git a/bsp/stm3210/project_107/stm32f10x_it.c b/bsp/stm3210/project_107/stm32f10x_it.c index 26447a8f27..8411987ae9 100644 --- a/bsp/stm3210/project_107/stm32f10x_it.c +++ b/bsp/stm3210/project_107/stm32f10x_it.c @@ -1,11 +1,11 @@ /** ****************************************************************************** - * @file Project/Template/stm32f10x_it.c + * @file Project/Template/stm32f10x_it.c * @author MCD Application Team * @version V3.1.0 * @date 06/19/2009 * @brief Main Interrupt Service Routines. - * This file provides template for all exceptions handler and + * This file provides template for all exceptions handler and * peripherals interrupt service routine. ****************************************************************************** * @copy @@ -18,12 +18,12 @@ * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2009 STMicroelectronics

- */ + */ /* Includes ------------------------------------------------------------------*/ #include "stm32f10x_it.h" +#include #include -#include "board.h" /** @addtogroup Template_Project * @{ @@ -168,7 +168,7 @@ void USART1_IRQHandler(void) #ifdef RT_USING_UART1 extern struct rt_device uart1_device; extern void rt_hw_serial_isr(struct rt_device *device); - + /* enter interrupt */ rt_interrupt_enter(); @@ -225,6 +225,7 @@ void USART3_IRQHandler(void) #endif } +#if defined(RT_USING_DFS) && STM32_USE_SDIO /******************************************************************************* * Function Name : SDIO_IRQHandler * Description : This function handles SDIO global interrupt request. @@ -234,7 +235,6 @@ void USART3_IRQHandler(void) *******************************************************************************/ void SDIO_IRQHandler(void) { -#if defined(RT_USING_DFS) && STM32_USE_SDIO extern int SD_ProcessIRQSrc(void); /* enter interrupt */ @@ -245,9 +245,32 @@ void SDIO_IRQHandler(void) /* leave interrupt */ rt_interrupt_leave(); -#endif } +#endif +#ifdef RT_USING_LWIP +#ifdef STM32F10X_CL +/******************************************************************************* +* Function Name : ETH_IRQHandler +* Description : This function handles ETH interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void ETH_IRQHandler(void) +{ + extern void rt_hw_stm32_eth_isr(void); + + /* enter interrupt */ + rt_interrupt_enter(); + + rt_hw_stm32_eth_isr(); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#else +#if (STM32_ETH_IF == 0) /******************************************************************************* * Function Name : EXTI0_IRQHandler * Description : This function handles External interrupt Line 0 request. @@ -257,7 +280,6 @@ void SDIO_IRQHandler(void) *******************************************************************************/ void EXTI0_IRQHandler(void) { -#if defined(RT_USING_LWIP) && !defined(STM32F10X_CL) extern void enc28j60_isr(void); /* enter interrupt */ @@ -270,34 +292,39 @@ void EXTI0_IRQHandler(void) /* leave interrupt */ rt_interrupt_leave(); -#endif } +#endif +#if (STM32_ETH_IF == 1) /******************************************************************************* -* Function Name : ETH_IRQHandler -* Description : This function handles ETH interrupt request. +* Function Name : EXTI9_5_IRQHandler +* Description : This function handles External lines 9 to 5 interrupt request. * Input : None * Output : None * Return : None *******************************************************************************/ -void ETH_IRQHandler(void) +void EXTI9_5_IRQHandler(void) { -#if defined(RT_USING_LWIP) && defined(STM32F10X_CL) - extern void rt_hw_stm32_eth_isr(void); - - /* enter interrupt */ - rt_interrupt_enter(); - - rt_hw_stm32_eth_isr(); + extern void rt_dm9000_isr(void); - /* leave interrupt */ - rt_interrupt_leave(); -#endif + /* enter interrupt */ + rt_interrupt_enter(); + + rt_dm9000_isr(); + + /* Clear the Key Button EXTI line pending bit */ + EXTI_ClearITPendingBit(EXTI_Line7); + + /* leave interrupt */ + rt_interrupt_leave(); } +#endif +#endif +#endif /* end of RT_USING_LWIP */ /** * @} - */ + */ /******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm3210/project_107/stm32f10x_it.h b/bsp/stm3210/project_107/stm32f10x_it.h index ad935ba382..fd60234ba0 100644 --- a/bsp/stm3210/project_107/stm32f10x_it.h +++ b/bsp/stm3210/project_107/stm32f10x_it.h @@ -1,6 +1,6 @@ /** ****************************************************************************** - * @file Project/Template/stm32f10x_it.h + * @file Project/Template/stm32f10x_it.h * @author MCD Application Team * @version V3.1.0 * @date 06/19/2009 @@ -16,7 +16,7 @@ * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * *

© COPYRIGHT 2009 STMicroelectronics

- */ + */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __STM32F10x_IT_H @@ -24,7 +24,7 @@ #ifdef __cplusplus extern "C" { -#endif +#endif /* Includes ------------------------------------------------------------------*/ #include "stm32f10x.h" diff --git a/bsp/stm3210/project_filesystem/application.c b/bsp/stm3210/project_filesystem/application.c index 01488661ef..9258aa0449 100644 --- a/bsp/stm3210/project_filesystem/application.c +++ b/bsp/stm3210/project_filesystem/application.c @@ -1,32 +1,30 @@ -/* - * File : application.c - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2006, RT-Thread Development Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rt-thread.org/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2009-01-05 Bernard the first version - */ - -/** - * @addtogroup STM32 - */ -/*@{*/ - +/* + * File : application.c + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006, RT-Thread Development Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2009-01-05 Bernard the first version + */ + +/** + * @addtogroup STM32 + */ +/*@{*/ + #include - -#ifdef RT_USING_DFS -/* dfs init */ -#include -/* dfs filesystem:FAT filesystem init */ -#include -/* dfs filesystem:EFS filesystem init */ -#include -/* dfs Filesystem APIs */ + +#ifdef RT_USING_DFS +/* dfs init */ +#include +/* dfs filesystem:EFS filesystem init */ +#include +/* dfs Filesystem APIs */ #include #endif @@ -73,42 +71,42 @@ void rt_init_thread_entry(void* parameter) /* Filesystem Initialization */ #ifdef RT_USING_DFS { - /* init the device filesystem */ - dfs_init(); - /* init the efsl filesystam*/ - efsl_init(); - - /* mount sd card fat partition 1 as root directory */ + /* init the device filesystem */ + dfs_init(); + /* init the efsl filesystam*/ + efsl_init(); + + /* mount sd card fat partition 1 as root directory */ if (dfs_mount("sd0", "/", "efs", 0, 0) == 0) - { + { rt_kprintf("File System initialized!\n"); ls_root(); } else rt_kprintf("File System init failed!\n"); - + } #endif } - -int rt_application_init() -{ - rt_thread_t init_thread; - + +int rt_application_init() +{ + rt_thread_t init_thread; + #if (RT_THREAD_PRIORITY_MAX == 32) - init_thread = rt_thread_create("init", - rt_init_thread_entry, RT_NULL, + init_thread = rt_thread_create("init", + rt_init_thread_entry, RT_NULL, 2048, 8, 20); #else - init_thread = rt_thread_create("init", - rt_init_thread_entry, RT_NULL, + init_thread = rt_thread_create("init", + rt_init_thread_entry, RT_NULL, 2048, 80, 20); #endif - if (init_thread != RT_NULL) + if (init_thread != RT_NULL) rt_thread_startup(init_thread); - - return 0; -} - -/*@}*/ + + return 0; +} + +/*@}*/ diff --git a/bsp/stm3210/project_filesystem/rtconfig.h b/bsp/stm3210/project_filesystem/rtconfig.h index a9013d312a..d97832256e 100644 --- a/bsp/stm3210/project_filesystem/rtconfig.h +++ b/bsp/stm3210/project_filesystem/rtconfig.h @@ -24,6 +24,12 @@ /* Using Hook */ #define RT_USING_HOOK +/* Using Software Timer */ +/* #define RT_USING_TIMER_SOFT */ +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 512 +#define RT_TIMER_TICK_PER_SECOND 10 + /* SECTION: IPC */ /* Using Semaphore*/ #define RT_USING_SEMAPHORE @@ -61,6 +67,9 @@ /* SECTION: device filesystem */ #define RT_USING_DFS +#define RT_USING_DFS_EFSL +/* #define RT_USING_DFS_ELMFAT */ + /* the max number of mounted filesystem */ #define DFS_FILESYSTEMS_MAX 2 /* the max number of opened files */ diff --git a/bsp/stm3210/project_filesystem/startup.c b/bsp/stm3210/project_filesystem/startup.c index f899c3ac66..36fe4b37a0 100644 --- a/bsp/stm3210/project_filesystem/startup.c +++ b/bsp/stm3210/project_filesystem/startup.c @@ -117,6 +117,9 @@ void rtthread_startup(void) finsh_set_device("uart1"); #endif + /* init timer thread */ + rt_system_timer_thread_init(); + /* init idle thread */ rt_thread_idle_init(); diff --git a/bsp/stm3210/project_filesystem/stm32f10x_it.c b/bsp/stm3210/project_filesystem/stm32f10x_it.c index 07be702146..5b131ea50f 100644 --- a/bsp/stm3210/project_filesystem/stm32f10x_it.c +++ b/bsp/stm3210/project_filesystem/stm32f10x_it.c @@ -1,130 +1,131 @@ -/** - ****************************************************************************** - * @file Project/Template/stm32f10x_it.c - * @author MCD Application Team - * @version V3.1.0 - * @date 06/19/2009 - * @brief Main Interrupt Service Routines. - * This file provides template for all exceptions handler and - * peripherals interrupt service routine. - ****************************************************************************** - * @copy - * - * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS - * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE - * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY - * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING - * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE - * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. - * - *

© COPYRIGHT 2009 STMicroelectronics

- */ - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f10x_it.h" +/** + ****************************************************************************** + * @file Project/Template/stm32f10x_it.c + * @author MCD Application Team + * @version V3.1.0 + * @date 06/19/2009 + * @brief Main Interrupt Service Routines. + * This file provides template for all exceptions handler and + * peripherals interrupt service routine. + ****************************************************************************** + * @copy + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

© COPYRIGHT 2009 STMicroelectronics

+ */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_it.h" +#include #include - -/** @addtogroup Template_Project - * @{ - */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************/ -/* Cortex-M3 Processor Exceptions Handlers */ -/******************************************************************************/ - -/** - * @brief This function handles NMI exception. - * @param None - * @retval None - */ -void NMI_Handler(void) -{ -} - -/** - * @brief This function handles Hard Fault exception. - * @param None - * @retval None - */ -void HardFault_Handler(void) -{ - /* Go to infinite loop when Hard Fault exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles Memory Manage exception. - * @param None - * @retval None - */ -void MemManage_Handler(void) -{ - /* Go to infinite loop when Memory Manage exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles Bus Fault exception. - * @param None - * @retval None - */ -void BusFault_Handler(void) -{ - /* Go to infinite loop when Bus Fault exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles Usage Fault exception. - * @param None - * @retval None - */ -void UsageFault_Handler(void) -{ - /* Go to infinite loop when Usage Fault exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles SVCall exception. - * @param None - * @retval None - */ -void SVC_Handler(void) -{ -} - -/** - * @brief This function handles Debug Monitor exception. - * @param None - * @retval None - */ -void DebugMon_Handler(void) -{ -} - -/******************************************************************************/ -/* STM32F10x Peripherals Interrupt Handlers */ -/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ -/* available peripheral interrupt handler's name please refer to the startup */ -/* file (startup_stm32f10x_xx.s). */ + +/** @addtogroup Template_Project + * @{ + */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + /******************************************************************************/ - +/* Cortex-M3 Processor Exceptions Handlers */ +/******************************************************************************/ + +/** + * @brief This function handles NMI exception. + * @param None + * @retval None + */ +void NMI_Handler(void) +{ +} + +/** + * @brief This function handles Hard Fault exception. + * @param None + * @retval None + */ +void HardFault_Handler(void) +{ + /* Go to infinite loop when Hard Fault exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles Memory Manage exception. + * @param None + * @retval None + */ +void MemManage_Handler(void) +{ + /* Go to infinite loop when Memory Manage exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles Bus Fault exception. + * @param None + * @retval None + */ +void BusFault_Handler(void) +{ + /* Go to infinite loop when Bus Fault exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles Usage Fault exception. + * @param None + * @retval None + */ +void UsageFault_Handler(void) +{ + /* Go to infinite loop when Usage Fault exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles SVCall exception. + * @param None + * @retval None + */ +void SVC_Handler(void) +{ +} + +/** + * @brief This function handles Debug Monitor exception. + * @param None + * @retval None + */ +void DebugMon_Handler(void) +{ +} + +/******************************************************************************/ +/* STM32F10x Peripherals Interrupt Handlers */ +/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ +/* available peripheral interrupt handler's name please refer to the startup */ +/* file (startup_stm32f10x_xx.s). */ +/******************************************************************************/ + /******************************************************************************* * Function Name : DMA1_Channel2_IRQHandler * Description : This function handles DMA1 Channel 2 interrupt request. @@ -249,6 +250,7 @@ void USART3_IRQHandler(void) #endif } +#if defined(RT_USING_DFS) && STM32_USE_SDIO /******************************************************************************* * Function Name : SDIO_IRQHandler * Description : This function handles SDIO global interrupt request. @@ -258,7 +260,6 @@ void USART3_IRQHandler(void) *******************************************************************************/ void SDIO_IRQHandler(void) { -#ifdef RT_USING_DFS extern int SD_ProcessIRQSrc(void); /* enter interrupt */ @@ -269,12 +270,86 @@ void SDIO_IRQHandler(void) /* leave interrupt */ rt_interrupt_leave(); -#endif } - -/** - * @} - */ - - -/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ +#endif + +#ifdef RT_USING_LWIP +#ifdef STM32F10X_CL +/******************************************************************************* +* Function Name : ETH_IRQHandler +* Description : This function handles ETH interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void ETH_IRQHandler(void) +{ + extern void rt_hw_stm32_eth_isr(void); + + /* enter interrupt */ + rt_interrupt_enter(); + + rt_hw_stm32_eth_isr(); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#else +#if (STM32_ETH_IF == 0) +/******************************************************************************* +* Function Name : EXTI0_IRQHandler +* Description : This function handles External interrupt Line 0 request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void EXTI0_IRQHandler(void) +{ + extern void enc28j60_isr(void); + + /* enter interrupt */ + rt_interrupt_enter(); + + enc28j60_isr(); + + /* Clear the Key Button EXTI line pending bit */ + EXTI_ClearITPendingBit(EXTI_Line0); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif + +#if (STM32_ETH_IF == 1) +/******************************************************************************* +* Function Name : EXTI9_5_IRQHandler +* Description : This function handles External lines 9 to 5 interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void EXTI9_5_IRQHandler(void) +{ + extern void rt_dm9000_isr(void); + + /* enter interrupt */ + rt_interrupt_enter(); + + rt_dm9000_isr(); + + /* Clear the Key Button EXTI line pending bit */ + EXTI_ClearITPendingBit(EXTI_Line7); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif +#endif +#endif /* end of RT_USING_LWIP */ + +/** + * @} + */ + + +/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm3210/project_finsh/rtconfig.h b/bsp/stm3210/project_finsh/rtconfig.h index 98b50b8404..910edd4bf0 100644 --- a/bsp/stm3210/project_finsh/rtconfig.h +++ b/bsp/stm3210/project_finsh/rtconfig.h @@ -24,6 +24,12 @@ /* Using Hook */ #define RT_USING_HOOK +/* Using Software Timer */ +/* #define RT_USING_TIMER_SOFT */ +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 512 +#define RT_TIMER_TICK_PER_SECOND 10 + /* SECTION: IPC */ /* Using Semaphore*/ #define RT_USING_SEMAPHORE @@ -59,7 +65,7 @@ /* the buffer size of console*/ #define RT_CONSOLEBUF_SIZE 128 -/* SECTION: finsh shell */ +/* SECTION: finsh, a C-Express shell */ #define RT_USING_FINSH /* Using symbol table */ #define FINSH_USING_SYMTAB diff --git a/bsp/stm3210/project_finsh/startup.c b/bsp/stm3210/project_finsh/startup.c index f0ce276b4f..c0b5b3a25e 100644 --- a/bsp/stm3210/project_finsh/startup.c +++ b/bsp/stm3210/project_finsh/startup.c @@ -25,10 +25,10 @@ /*@{*/ extern int rt_application_init(void); -#ifdef RT_USING_FINSH +#ifdef RT_USING_FINSH extern void finsh_system_init(void); extern void finsh_set_device(const char* device); -#endif +#endif #ifdef __CC_ARM extern int Image$$RW_IRAM1$$ZI$$Limit; @@ -108,7 +108,10 @@ void rtthread_startup(void) /* init finsh */ finsh_system_init(); finsh_set_device("uart1"); -#endif +#endif + + /* init timer thread */ + rt_system_timer_thread_init(); /* init idle thread */ rt_thread_idle_init(); diff --git a/bsp/stm3210/project_finsh/stm32f10x_it.c b/bsp/stm3210/project_finsh/stm32f10x_it.c index 8ea8c7a710..dbbe524b86 100644 --- a/bsp/stm3210/project_finsh/stm32f10x_it.c +++ b/bsp/stm3210/project_finsh/stm32f10x_it.c @@ -22,7 +22,8 @@ /* Includes ------------------------------------------------------------------*/ #include "stm32f10x_it.h" -#include +#include +#include /** @addtogroup Template_Project * @{ @@ -124,130 +125,227 @@ void DebugMon_Handler(void) /* available peripheral interrupt handler's name please refer to the startup */ /* file (startup_stm32f10x_xx.s). */ /******************************************************************************/ - -/******************************************************************************* -* Function Name : DMA1_Channel2_IRQHandler -* Description : This function handles DMA1 Channel 2 interrupt request. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void DMA1_Channel2_IRQHandler(void) -{ -#ifdef RT_USING_UART3 - extern struct rt_device uart3_device; - extern void rt_hw_serial_dma_tx_isr(struct rt_device *device); - - /* enter interrupt */ - rt_interrupt_enter(); - - if (DMA_GetITStatus(DMA1_IT_TC2)) - { - /* transmission complete, invoke serial dma tx isr */ - rt_hw_serial_dma_tx_isr(&uart3_device); - } - - /* clear DMA flag */ - DMA_ClearFlag(DMA1_FLAG_TC2 | DMA1_FLAG_TE2); - - /* leave interrupt */ - rt_interrupt_leave(); -#endif -} - -/******************************************************************************* -* Function Name : DMA1_Channel6_IRQHandler -* Description : This function handles DMA1 Channel 6 interrupt request. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void DMA1_Channel6_IRQHandler(void) -{ -#ifdef RT_USING_UART2 - extern struct rt_device uart2_device; - extern void rt_hw_serial_dma_rx_isr(struct rt_device *device); - - /* enter interrupt */ - rt_interrupt_enter(); - - /* clear DMA flag */ - DMA_ClearFlag(DMA1_FLAG_TC6 | DMA1_FLAG_TE6); - rt_hw_serial_dma_rx_isr(&uart2_device); - - /* leave interrupt */ - rt_interrupt_leave(); -#endif -} - -/******************************************************************************* -* Function Name : USART1_IRQHandler -* Description : This function handles USART1 global interrupt request. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void USART1_IRQHandler(void) -{ -#ifdef RT_USING_UART1 - extern struct rt_device uart1_device; - extern void rt_hw_serial_isr(struct rt_device *device); - - /* enter interrupt */ - rt_interrupt_enter(); - - rt_hw_serial_isr(&uart1_device); - - /* leave interrupt */ - rt_interrupt_leave(); -#endif -} - -/******************************************************************************* -* Function Name : USART2_IRQHandler -* Description : This function handles USART2 global interrupt request. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void USART2_IRQHandler(void) -{ -#ifdef RT_USING_UART2 - extern struct rt_device uart2_device; - extern void rt_hw_serial_isr(struct rt_device *device); - - /* enter interrupt */ - rt_interrupt_enter(); - - rt_hw_serial_isr(&uart2_device); - - /* leave interrupt */ - rt_interrupt_leave(); -#endif -} - -/******************************************************************************* -* Function Name : USART3_IRQHandler -* Description : This function handles USART3 global interrupt request. -* Input : None -* Output : None -* Return : None -*******************************************************************************/ -void USART3_IRQHandler(void) -{ -#ifdef RT_USING_UART3 - extern struct rt_device uart3_device; - extern void rt_hw_serial_isr(struct rt_device *device); - - /* enter interrupt */ - rt_interrupt_enter(); - - rt_hw_serial_isr(&uart3_device); - - /* leave interrupt */ - rt_interrupt_leave(); -#endif -} + +/******************************************************************************* +* Function Name : DMA1_Channel2_IRQHandler +* Description : This function handles DMA1 Channel 2 interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void DMA1_Channel2_IRQHandler(void) +{ +#ifdef RT_USING_UART3 + extern struct rt_device uart3_device; + extern void rt_hw_serial_dma_tx_isr(struct rt_device *device); + + /* enter interrupt */ + rt_interrupt_enter(); + + if (DMA_GetITStatus(DMA1_IT_TC2)) + { + /* transmission complete, invoke serial dma tx isr */ + rt_hw_serial_dma_tx_isr(&uart3_device); + } + + /* clear DMA flag */ + DMA_ClearFlag(DMA1_FLAG_TC2 | DMA1_FLAG_TE2); + + /* leave interrupt */ + rt_interrupt_leave(); +#endif +} + +/******************************************************************************* +* Function Name : DMA1_Channel6_IRQHandler +* Description : This function handles DMA1 Channel 6 interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void DMA1_Channel6_IRQHandler(void) +{ +#ifdef RT_USING_UART2 + extern struct rt_device uart2_device; + extern void rt_hw_serial_dma_rx_isr(struct rt_device *device); + + /* enter interrupt */ + rt_interrupt_enter(); + + /* clear DMA flag */ + DMA_ClearFlag(DMA1_FLAG_TC6 | DMA1_FLAG_TE6); + rt_hw_serial_dma_rx_isr(&uart2_device); + + /* leave interrupt */ + rt_interrupt_leave(); +#endif +} + +/******************************************************************************* +* Function Name : USART1_IRQHandler +* Description : This function handles USART1 global interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void USART1_IRQHandler(void) +{ +#ifdef RT_USING_UART1 + extern struct rt_device uart1_device; + extern void rt_hw_serial_isr(struct rt_device *device); + + /* enter interrupt */ + rt_interrupt_enter(); + + rt_hw_serial_isr(&uart1_device); + + /* leave interrupt */ + rt_interrupt_leave(); +#endif +} + +/******************************************************************************* +* Function Name : USART2_IRQHandler +* Description : This function handles USART2 global interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void USART2_IRQHandler(void) +{ +#ifdef RT_USING_UART2 + extern struct rt_device uart2_device; + extern void rt_hw_serial_isr(struct rt_device *device); + + /* enter interrupt */ + rt_interrupt_enter(); + + rt_hw_serial_isr(&uart2_device); + + /* leave interrupt */ + rt_interrupt_leave(); +#endif +} + +/******************************************************************************* +* Function Name : USART3_IRQHandler +* Description : This function handles USART3 global interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void USART3_IRQHandler(void) +{ +#ifdef RT_USING_UART3 + extern struct rt_device uart3_device; + extern void rt_hw_serial_isr(struct rt_device *device); + + /* enter interrupt */ + rt_interrupt_enter(); + + rt_hw_serial_isr(&uart3_device); + + /* leave interrupt */ + rt_interrupt_leave(); +#endif +} + +#if defined(RT_USING_DFS) && STM32_USE_SDIO +/******************************************************************************* +* Function Name : SDIO_IRQHandler +* Description : This function handles SDIO global interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void SDIO_IRQHandler(void) +{ + extern int SD_ProcessIRQSrc(void); + + /* enter interrupt */ + rt_interrupt_enter(); + + /* Process All SDIO Interrupt Sources */ + SD_ProcessIRQSrc(); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif + +#ifdef RT_USING_LWIP +#ifdef STM32F10X_CL +/******************************************************************************* +* Function Name : ETH_IRQHandler +* Description : This function handles ETH interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void ETH_IRQHandler(void) +{ + extern void rt_hw_stm32_eth_isr(void); + + /* enter interrupt */ + rt_interrupt_enter(); + + rt_hw_stm32_eth_isr(); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#else +#if (STM32_ETH_IF == 0) +/******************************************************************************* +* Function Name : EXTI0_IRQHandler +* Description : This function handles External interrupt Line 0 request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void EXTI0_IRQHandler(void) +{ + extern void enc28j60_isr(void); + + /* enter interrupt */ + rt_interrupt_enter(); + + enc28j60_isr(); + + /* Clear the Key Button EXTI line pending bit */ + EXTI_ClearITPendingBit(EXTI_Line0); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif + +#if (STM32_ETH_IF == 1) +/******************************************************************************* +* Function Name : EXTI9_5_IRQHandler +* Description : This function handles External lines 9 to 5 interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void EXTI9_5_IRQHandler(void) +{ + extern void rt_dm9000_isr(void); + + /* enter interrupt */ + rt_interrupt_enter(); + + rt_dm9000_isr(); + + /* Clear the Key Button EXTI line pending bit */ + EXTI_ClearITPendingBit(EXTI_Line7); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif +#endif +#endif /* end of RT_USING_LWIP */ /** * @} diff --git a/bsp/stm3210/project_lwip/application.c b/bsp/stm3210/project_lwip/application.c index b1830132ef..13a2ee511a 100644 --- a/bsp/stm3210/project_lwip/application.c +++ b/bsp/stm3210/project_lwip/application.c @@ -17,43 +17,62 @@ */ /*@{*/ -#include - -#ifdef RT_USING_LWIP -#include -#include -#endif - -void rt_init_thread_entry(void* parameter) -{ -/* LwIP Initialization */ -#ifdef RT_USING_LWIP - { - extern void lwip_sys_init(void); - - /* init lwip system */ - lwip_sys_init(); - rt_kprintf("TCP/IP initialized!\n"); - } -#endif -} +#include +#include + +#ifdef RT_USING_LWIP +#include +#include +#include +#endif + +void rt_init_thread_entry(void* parameter) +{ +/* LwIP Initialization */ +#ifdef RT_USING_LWIP + { + extern void lwip_sys_init(void); + + /* register ethernetif device */ + eth_system_device_init(); + +#ifdef STM32F10X_CL + rt_hw_stm32_eth_init(); +#else + /* STM32F103 */ + #if STM32_ETH_IF == 0 + rt_hw_enc28j60_init(); + #elif STM32_ETH_IF == 1 + rt_hw_dm9000_init(); + #endif +#endif + + /* re-init device driver */ + rt_device_init_all(); + + /* init lwip system */ + lwip_sys_init(); + rt_kprintf("TCP/IP initialized!\n"); + } +#endif +} int rt_application_init() { rt_thread_t init_thread; -#if (RT_THREAD_PRIORITY_MAX == 32) +#if (RT_THREAD_PRIORITY_MAX == 32) init_thread = rt_thread_create("init", rt_init_thread_entry, RT_NULL, - 2048, 8, 20); -#else + 2048, 8, 20); +#else init_thread = rt_thread_create("init", rt_init_thread_entry, RT_NULL, - 2048, 80, 20); -#endif - + 2048, 80, 20); +#endif + if (init_thread != RT_NULL) - rt_thread_startup(init_thread); + rt_thread_startup(init_thread); return 0; } diff --git a/bsp/stm3210/project_lwip/rtconfig.h b/bsp/stm3210/project_lwip/rtconfig.h index 6eb4764008..e05e2a719e 100644 --- a/bsp/stm3210/project_lwip/rtconfig.h +++ b/bsp/stm3210/project_lwip/rtconfig.h @@ -24,6 +24,12 @@ /* Using Hook */ #define RT_USING_HOOK +/* Using Software Timer */ +/* #define RT_USING_TIMER_SOFT */ +#define RT_TIMER_THREAD_PRIO 4 +#define RT_TIMER_THREAD_STACK_SIZE 512 +#define RT_TIMER_TICK_PER_SECOND 10 + /* SECTION: IPC */ /* Using Semaphore*/ #define RT_USING_SEMAPHORE @@ -57,23 +63,23 @@ /* SECTION: Console options */ /* the buffer size of console*/ -#define RT_CONSOLEBUF_SIZE 128 - +#define RT_CONSOLEBUF_SIZE 128 + /* SECTION: lwip, a lighwight TCP/IP protocol stack */ #define RT_USING_LWIP - + /* Enable ICMP protocol*/ #define RT_LWIP_ICMP /* Enable UDP protocol*/ #define RT_LWIP_UDP /* Enable TCP protocol*/ -#define RT_LWIP_TCP +#define RT_LWIP_TCP /* Enable DNS */ #define RT_LWIP_DNS - + /* the number of simulatenously active TCP connections*/ #define RT_LWIP_TCP_PCB_NUM 5 - + /* ip address of target*/ #define RT_LWIP_IPADDR0 192 #define RT_LWIP_IPADDR1 168 diff --git a/bsp/stm3210/project_lwip/startup.c b/bsp/stm3210/project_lwip/startup.c index d509da099b..0c452762d7 100644 --- a/bsp/stm3210/project_lwip/startup.c +++ b/bsp/stm3210/project_lwip/startup.c @@ -23,17 +23,12 @@ */ /*@{*/ - -#ifdef RT_USING_LWIP -#include "enc28j60.h" -#include -#endif extern int rt_application_init(void); -#ifdef RT_USING_FINSH +#ifdef RT_USING_FINSH extern void finsh_system_init(void); extern void finsh_set_device(const char* device); -#endif +#endif #ifdef __CC_ARM extern int Image$$RW_IRAM1$$ZI$$Limit; @@ -102,14 +97,7 @@ void rtthread_startup(void) rt_system_scheduler_init(); /* init hardware serial device */ - rt_hw_usart_init(); - -#ifdef RT_USING_LWIP - eth_system_device_init(); - - /* register ethernetif device */ - rt_hw_enc28j60_init(); -#endif + rt_hw_usart_init(); /* init all device */ rt_device_init_all(); @@ -121,7 +109,10 @@ void rtthread_startup(void) /* init finsh */ finsh_system_init(); finsh_set_device("uart1"); -#endif +#endif + + /* init timer thread */ + rt_system_timer_thread_init(); /* init idle thread */ rt_thread_idle_init(); diff --git a/bsp/stm3210/project_lwip/stm32f10x_it.c b/bsp/stm3210/project_lwip/stm32f10x_it.c index 361e4e2cbc..5b131ea50f 100644 --- a/bsp/stm3210/project_lwip/stm32f10x_it.c +++ b/bsp/stm3210/project_lwip/stm32f10x_it.c @@ -1,130 +1,131 @@ -/** - ****************************************************************************** - * @file Project/Template/stm32f10x_it.c - * @author MCD Application Team - * @version V3.1.0 - * @date 06/19/2009 - * @brief Main Interrupt Service Routines. - * This file provides template for all exceptions handler and - * peripherals interrupt service routine. - ****************************************************************************** - * @copy - * - * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS - * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE - * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY - * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING - * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE - * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. - * - *

© COPYRIGHT 2009 STMicroelectronics

- */ - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f10x_it.h" +/** + ****************************************************************************** + * @file Project/Template/stm32f10x_it.c + * @author MCD Application Team + * @version V3.1.0 + * @date 06/19/2009 + * @brief Main Interrupt Service Routines. + * This file provides template for all exceptions handler and + * peripherals interrupt service routine. + ****************************************************************************** + * @copy + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

© COPYRIGHT 2009 STMicroelectronics

+ */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f10x_it.h" +#include #include - -/** @addtogroup Template_Project - * @{ - */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************/ -/* Cortex-M3 Processor Exceptions Handlers */ -/******************************************************************************/ - -/** - * @brief This function handles NMI exception. - * @param None - * @retval None - */ -void NMI_Handler(void) -{ -} - -/** - * @brief This function handles Hard Fault exception. - * @param None - * @retval None - */ -void HardFault_Handler(void) -{ - /* Go to infinite loop when Hard Fault exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles Memory Manage exception. - * @param None - * @retval None - */ -void MemManage_Handler(void) -{ - /* Go to infinite loop when Memory Manage exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles Bus Fault exception. - * @param None - * @retval None - */ -void BusFault_Handler(void) -{ - /* Go to infinite loop when Bus Fault exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles Usage Fault exception. - * @param None - * @retval None - */ -void UsageFault_Handler(void) -{ - /* Go to infinite loop when Usage Fault exception occurs */ - while (1) - { - } -} - -/** - * @brief This function handles SVCall exception. - * @param None - * @retval None - */ -void SVC_Handler(void) -{ -} - -/** - * @brief This function handles Debug Monitor exception. - * @param None - * @retval None - */ -void DebugMon_Handler(void) -{ -} - -/******************************************************************************/ -/* STM32F10x Peripherals Interrupt Handlers */ -/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ -/* available peripheral interrupt handler's name please refer to the startup */ -/* file (startup_stm32f10x_xx.s). */ + +/** @addtogroup Template_Project + * @{ + */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ + /******************************************************************************/ - +/* Cortex-M3 Processor Exceptions Handlers */ +/******************************************************************************/ + +/** + * @brief This function handles NMI exception. + * @param None + * @retval None + */ +void NMI_Handler(void) +{ +} + +/** + * @brief This function handles Hard Fault exception. + * @param None + * @retval None + */ +void HardFault_Handler(void) +{ + /* Go to infinite loop when Hard Fault exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles Memory Manage exception. + * @param None + * @retval None + */ +void MemManage_Handler(void) +{ + /* Go to infinite loop when Memory Manage exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles Bus Fault exception. + * @param None + * @retval None + */ +void BusFault_Handler(void) +{ + /* Go to infinite loop when Bus Fault exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles Usage Fault exception. + * @param None + * @retval None + */ +void UsageFault_Handler(void) +{ + /* Go to infinite loop when Usage Fault exception occurs */ + while (1) + { + } +} + +/** + * @brief This function handles SVCall exception. + * @param None + * @retval None + */ +void SVC_Handler(void) +{ +} + +/** + * @brief This function handles Debug Monitor exception. + * @param None + * @retval None + */ +void DebugMon_Handler(void) +{ +} + +/******************************************************************************/ +/* STM32F10x Peripherals Interrupt Handlers */ +/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */ +/* available peripheral interrupt handler's name please refer to the startup */ +/* file (startup_stm32f10x_xx.s). */ +/******************************************************************************/ + /******************************************************************************* * Function Name : DMA1_Channel2_IRQHandler * Description : This function handles DMA1 Channel 2 interrupt request. @@ -249,6 +250,7 @@ void USART3_IRQHandler(void) #endif } +#if defined(RT_USING_DFS) && STM32_USE_SDIO /******************************************************************************* * Function Name : SDIO_IRQHandler * Description : This function handles SDIO global interrupt request. @@ -258,7 +260,6 @@ void USART3_IRQHandler(void) *******************************************************************************/ void SDIO_IRQHandler(void) { -#ifdef RT_USING_DFS extern int SD_ProcessIRQSrc(void); /* enter interrupt */ @@ -269,9 +270,32 @@ void SDIO_IRQHandler(void) /* leave interrupt */ rt_interrupt_leave(); -#endif } +#endif +#ifdef RT_USING_LWIP +#ifdef STM32F10X_CL +/******************************************************************************* +* Function Name : ETH_IRQHandler +* Description : This function handles ETH interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void ETH_IRQHandler(void) +{ + extern void rt_hw_stm32_eth_isr(void); + + /* enter interrupt */ + rt_interrupt_enter(); + + rt_hw_stm32_eth_isr(); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#else +#if (STM32_ETH_IF == 0) /******************************************************************************* * Function Name : EXTI0_IRQHandler * Description : This function handles External interrupt Line 0 request. @@ -281,7 +305,6 @@ void SDIO_IRQHandler(void) *******************************************************************************/ void EXTI0_IRQHandler(void) { -#ifdef RT_USING_LWIP extern void enc28j60_isr(void); /* enter interrupt */ @@ -294,12 +317,39 @@ void EXTI0_IRQHandler(void) /* leave interrupt */ rt_interrupt_leave(); -#endif } - -/** - * @} - */ - - -/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ +#endif + +#if (STM32_ETH_IF == 1) +/******************************************************************************* +* Function Name : EXTI9_5_IRQHandler +* Description : This function handles External lines 9 to 5 interrupt request. +* Input : None +* Output : None +* Return : None +*******************************************************************************/ +void EXTI9_5_IRQHandler(void) +{ + extern void rt_dm9000_isr(void); + + /* enter interrupt */ + rt_interrupt_enter(); + + rt_dm9000_isr(); + + /* Clear the Key Button EXTI line pending bit */ + EXTI_ClearITPendingBit(EXTI_Line7); + + /* leave interrupt */ + rt_interrupt_leave(); +} +#endif +#endif +#endif /* end of RT_USING_LWIP */ + +/** + * @} + */ + + +/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/