From eec8402f632cddadb5beb779af4efd5f91df6b09 Mon Sep 17 00:00:00 2001 From: wuyangyong Date: Wed, 2 Sep 2009 12:02:23 +0000 Subject: [PATCH] add net_radio_sch; chage bsp/stm32 CAN --> CAN1 git-svn-id: https://rt-thread.googlecode.com/svn/trunk@30 bbd45198-f89e-11dd-88c7-29a3b14d5316 --- bsp/stm32/stm32f10x_it.c | 214 ++++++++++++++-------------- bsp/stm32/stm32f10x_it.h | 10 +- bsp/stm32_radio/sch/sch_rev0.01.pdf | Bin 0 -> 41756 bytes libcpu/arm/stm32/start_rvds.s | 16 +-- 4 files changed, 120 insertions(+), 120 deletions(-) create mode 100644 bsp/stm32_radio/sch/sch_rev0.01.pdf diff --git a/bsp/stm32/stm32f10x_it.c b/bsp/stm32/stm32f10x_it.c index bb5f38cda8..c250f9d098 100644 --- a/bsp/stm32/stm32f10x_it.c +++ b/bsp/stm32/stm32f10x_it.c @@ -49,11 +49,11 @@ void NMIException(void) *******************************************************************************/ void HardFaultException(void) { - /* Go to infinite loop when Hard Fault exception occurs */ - rt_kprintf("hard fault exception\n"); - while (1) - { - } + /* Go to infinite loop when Hard Fault exception occurs */ + rt_kprintf("hard fault exception\n"); + while (1) + { + } } /******************************************************************************* @@ -65,11 +65,11 @@ void HardFaultException(void) *******************************************************************************/ void MemManageException(void) { - /* Go to infinite loop when Memory Manage exception occurs */ - rt_kprintf("memory manage exception\n"); - while (1) - { - } + /* Go to infinite loop when Memory Manage exception occurs */ + rt_kprintf("memory manage exception\n"); + while (1) + { + } } /******************************************************************************* @@ -81,11 +81,11 @@ void MemManageException(void) *******************************************************************************/ void BusFaultException(void) { - /* Go to infinite loop when Bus Fault exception occurs */ - rt_kprintf("bus fault exception\n"); - while (1) - { - } + /* Go to infinite loop when Bus Fault exception occurs */ + rt_kprintf("bus fault exception\n"); + while (1) + { + } } /******************************************************************************* @@ -97,11 +97,11 @@ void BusFaultException(void) *******************************************************************************/ void UsageFaultException(void) { - /* Go to infinite loop when Usage Fault exception occurs */ - rt_kprintf("usage fault exception\n"); - while (1) - { - } + /* Go to infinite loop when Usage Fault exception occurs */ + rt_kprintf("usage fault exception\n"); + while (1) + { + } } /******************************************************************************* @@ -135,8 +135,8 @@ void SVCHandler(void) *******************************************************************************/ void SysTickHandler(void) { - /* handle os tick */ - rt_hw_timer_handler(); + /* handle os tick */ + rt_hw_timer_handler(); } /******************************************************************************* @@ -181,22 +181,22 @@ void TAMPER_IRQHandler(void) *******************************************************************************/ void RTC_IRQHandler(void) { - if (RTC_GetITStatus(RTC_IT_SEC) != RESET) - { - /* Clear the RTC Second interrupt */ - RTC_ClearITPendingBit(RTC_IT_SEC); - - /* Wait until last write operation on RTC registers has finished */ - RTC_WaitForLastTask(); - - /* Reset RTC Counter when Time is 23:59:59 */ - if (RTC_GetCounter() == 0x00015180) + if (RTC_GetITStatus(RTC_IT_SEC) != RESET) { - RTC_SetCounter(0x0); - /* Wait until last write operation on RTC registers has finished */ - RTC_WaitForLastTask(); + /* Clear the RTC Second interrupt */ + RTC_ClearITPendingBit(RTC_IT_SEC); + + /* Wait until last write operation on RTC registers has finished */ + RTC_WaitForLastTask(); + + /* Reset RTC Counter when Time is 23:59:59 */ + if (RTC_GetCounter() == 0x00015180) + { + RTC_SetCounter(0x0); + /* Wait until last write operation on RTC registers has finished */ + RTC_WaitForLastTask(); + } } - } } /******************************************************************************* @@ -230,19 +230,19 @@ void RCC_IRQHandler(void) *******************************************************************************/ void EXTI0_IRQHandler(void) { - extern void enc28j60_isr(void); + extern void enc28j60_isr(void); - /* enter interrupt */ - rt_interrupt_enter(); + /* enter interrupt */ + rt_interrupt_enter(); - enc28j60_isr(); - - /* Clear the Key Button EXTI line pending bit */ - EXTI_ClearITPendingBit(EXTI_Line0); + enc28j60_isr(); - /* leave interrupt */ - rt_interrupt_leave(); - rt_hw_interrupt_thread_switch(); + /* Clear the Key Button EXTI line pending bit */ + EXTI_ClearITPendingBit(EXTI_Line0); + + /* leave interrupt */ + rt_interrupt_leave(); + rt_hw_interrupt_thread_switch(); } /******************************************************************************* @@ -310,23 +310,23 @@ void DMA1_Channel1_IRQHandler(void) void DMA1_Channel2_IRQHandler(void) { #ifdef RT_USING_UART3 - extern struct rt_device uart3_device; + extern struct rt_device uart3_device; - /* enter interrupt */ - rt_interrupt_enter(); + /* 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(); - rt_hw_interrupt_thread_switch(); + 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(); + rt_hw_interrupt_thread_switch(); #endif } @@ -373,18 +373,18 @@ void DMA1_Channel5_IRQHandler(void) void DMA1_Channel6_IRQHandler(void) { #ifdef RT_USING_UART2 - extern struct rt_device uart2_device; + extern struct rt_device uart2_device; - /* enter interrupt */ - rt_interrupt_enter(); + /* enter interrupt */ + rt_interrupt_enter(); - /* clear DMA flag */ - DMA_ClearFlag(DMA1_FLAG_TC6 | DMA1_FLAG_TE6); - rt_hw_serial_dma_rx_isr(&uart2_device); + /* clear DMA flag */ + DMA_ClearFlag(DMA1_FLAG_TC6 | DMA1_FLAG_TE6); + rt_hw_serial_dma_rx_isr(&uart2_device); - /* leave interrupt */ - rt_interrupt_leave(); - rt_hw_interrupt_thread_switch(); + /* leave interrupt */ + rt_interrupt_leave(); + rt_hw_interrupt_thread_switch(); #endif } @@ -411,48 +411,48 @@ void ADC1_2_IRQHandler(void) } /******************************************************************************* -* Function Name : USB_HP_CAN_TX_IRQHandler +* Function Name : USB_HP_CAN1_TX_IRQHandler * Description : This function handles USB High Priority or CAN TX interrupts * requests. * Input : None * Output : None * Return : None *******************************************************************************/ -void USB_HP_CAN_TX_IRQHandler(void) +void USB_HP_CAN1_TX_IRQHandler(void) { } /******************************************************************************* -* Function Name : USB_LP_CAN_RX0_IRQHandler +* Function Name : USB_LP_CAN1_RX0_IRQHandler * Description : This function handles USB Low Priority or CAN RX0 interrupts * requests. * Input : None * Output : None * Return : None *******************************************************************************/ -void USB_LP_CAN_RX0_IRQHandler(void) +void USB_LP_CAN1_RX0_IRQHandler(void) { } /******************************************************************************* -* Function Name : CAN_RX1_IRQHandler +* Function Name : CAN1_RX1_IRQHandler * Description : This function handles CAN RX1 interrupt request. * Input : None * Output : None * Return : None *******************************************************************************/ -void CAN_RX1_IRQHandler(void) +void CAN1_RX1_IRQHandler(void) { } /******************************************************************************* -* Function Name : CAN_SCE_IRQHandler +* Function Name : CAN1_SCE_IRQHandler * Description : This function handles CAN SCE interrupt request. * Input : None * Output : None * Return : None *******************************************************************************/ -void CAN_SCE_IRQHandler(void) +void CAN1_SCE_IRQHandler(void) { } @@ -622,15 +622,15 @@ void SPI2_IRQHandler(void) void USART1_IRQHandler(void) { #ifdef RT_USING_UART1 - extern struct rt_device uart1_device; - /* enter interrupt */ - rt_interrupt_enter(); + extern struct rt_device uart1_device; + /* enter interrupt */ + rt_interrupt_enter(); - rt_hw_serial_isr(&uart1_device); + rt_hw_serial_isr(&uart1_device); - /* leave interrupt */ - rt_interrupt_leave(); - rt_hw_interrupt_thread_switch(); + /* leave interrupt */ + rt_interrupt_leave(); + rt_hw_interrupt_thread_switch(); #endif } @@ -644,16 +644,16 @@ void USART1_IRQHandler(void) void USART2_IRQHandler(void) { #ifdef RT_USING_UART2 - extern struct rt_device uart2_device; + extern struct rt_device uart2_device; - /* enter interrupt */ - rt_interrupt_enter(); + /* enter interrupt */ + rt_interrupt_enter(); - rt_hw_serial_isr(&uart2_device); + rt_hw_serial_isr(&uart2_device); - /* leave interrupt */ - rt_interrupt_leave(); - rt_hw_interrupt_thread_switch(); + /* leave interrupt */ + rt_interrupt_leave(); + rt_hw_interrupt_thread_switch(); #endif } @@ -667,16 +667,16 @@ void USART2_IRQHandler(void) void USART3_IRQHandler(void) { #ifdef RT_USING_UART3 - extern struct rt_device uart3_device; + extern struct rt_device uart3_device; - /* enter interrupt */ - rt_interrupt_enter(); + /* enter interrupt */ + rt_interrupt_enter(); - rt_hw_serial_isr(&uart3_device); + rt_hw_serial_isr(&uart3_device); - /* leave interrupt */ - rt_interrupt_leave(); - rt_hw_interrupt_thread_switch(); + /* leave interrupt */ + rt_interrupt_leave(); + rt_hw_interrupt_thread_switch(); #endif } @@ -791,17 +791,17 @@ void FSMC_IRQHandler(void) void SDIO_IRQHandler(void) { #ifdef RT_USING_DFS - extern int SD_ProcessIRQSrc(void); + extern int SD_ProcessIRQSrc(void); - /* enter interrupt */ - rt_interrupt_enter(); + /* enter interrupt */ + rt_interrupt_enter(); - /* Process All SDIO Interrupt Sources */ - SD_ProcessIRQSrc(); + /* Process All SDIO Interrupt Sources */ + SD_ProcessIRQSrc(); - /* leave interrupt */ - rt_interrupt_leave(); - rt_hw_interrupt_thread_switch(); + /* leave interrupt */ + rt_interrupt_leave(); + rt_hw_interrupt_thread_switch(); #endif } diff --git a/bsp/stm32/stm32f10x_it.h b/bsp/stm32/stm32f10x_it.h index 11740669fa..293f2803e3 100644 --- a/bsp/stm32/stm32f10x_it.h +++ b/bsp/stm32/stm32f10x_it.h @@ -53,10 +53,10 @@ void DMA1_Channel5_IRQHandler(void); void DMA1_Channel6_IRQHandler(void); void DMA1_Channel7_IRQHandler(void); void ADC1_2_IRQHandler(void); -void USB_HP_CAN_TX_IRQHandler(void); -void USB_LP_CAN_RX0_IRQHandler(void); -void CAN_RX1_IRQHandler(void); -void CAN_SCE_IRQHandler(void); +void USB_HP_CAN1_TX_IRQHandler(void); +void USB_LP_CAN1_RX0_IRQHandler(void); +void CAN1_RX1_IRQHandler(void); +void CAN1_SCE_IRQHandler(void); void EXTI9_5_IRQHandler(void); void TIM1_BRK_IRQHandler(void); void TIM1_UP_IRQHandler(void); @@ -94,7 +94,7 @@ void DMA2_Channel1_IRQHandler(void); void DMA2_Channel2_IRQHandler(void); void DMA2_Channel3_IRQHandler(void); void DMA2_Channel4_5_IRQHandler(void); - + #endif /* __STM32F10x_IT_H */ /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/bsp/stm32_radio/sch/sch_rev0.01.pdf b/bsp/stm32_radio/sch/sch_rev0.01.pdf new file mode 100644 index 0000000000000000000000000000000000000000..966e47a71f072e8903e18cce6b4362b18429e17a GIT binary patch literal 41756 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 J<_4ld{{zwX&sG2c literal 0 HcmV?d00001 diff --git a/libcpu/arm/stm32/start_rvds.s b/libcpu/arm/stm32/start_rvds.s index ec9419fe07..d4c00c7876 100644 --- a/libcpu/arm/stm32/start_rvds.s +++ b/libcpu/arm/stm32/start_rvds.s @@ -85,10 +85,10 @@ __heap_limit IMPORT DMA1_Channel6_IRQHandler IMPORT DMA1_Channel7_IRQHandler IMPORT ADC1_2_IRQHandler - IMPORT USB_HP_CAN_TX_IRQHandler - IMPORT USB_LP_CAN_RX0_IRQHandler - IMPORT CAN_RX1_IRQHandler - IMPORT CAN_SCE_IRQHandler + IMPORT USB_HP_CAN1_TX_IRQHandler + IMPORT USB_LP_CAN1_RX0_IRQHandler + IMPORT CAN1_RX1_IRQHandler + IMPORT CAN1_SCE_IRQHandler IMPORT EXTI9_5_IRQHandler IMPORT TIM1_BRK_IRQHandler IMPORT TIM1_UP_IRQHandler @@ -168,10 +168,10 @@ __Vectors DCD __initial_sp ; Top of Stack DCD DMA1_Channel6_IRQHandler DCD DMA1_Channel7_IRQHandler DCD ADC1_2_IRQHandler - DCD USB_HP_CAN_TX_IRQHandler - DCD USB_LP_CAN_RX0_IRQHandler - DCD CAN_RX1_IRQHandler - DCD CAN_SCE_IRQHandler + DCD USB_HP_CAN1_TX_IRQHandler + DCD USB_LP_CAN1_RX0_IRQHandler + DCD CAN1_RX1_IRQHandler + DCD CAN1_SCE_IRQHandler DCD EXTI9_5_IRQHandler DCD TIM1_BRK_IRQHandler DCD TIM1_UP_IRQHandler