forked from xuos/xiuos
				
			feat support DMA for aiit-arm32-board and stm32f407-st-discovery uart function
This commit is contained in:
		
							parent
							
								
									bac136c51d
								
							
						
					
					
						commit
						109ad93e9e
					
				| 
						 | 
					@ -9,8 +9,11 @@ menuconfig BSP_USING_USART1
 | 
				
			||||||
            string "serial bus 1 driver name"
 | 
					            string "serial bus 1 driver name"
 | 
				
			||||||
            default "usart1_drv"
 | 
					            default "usart1_drv"
 | 
				
			||||||
        config SERIAL_1_DEVICE_NAME_0
 | 
					        config SERIAL_1_DEVICE_NAME_0
 | 
				
			||||||
                string "serial bus 1 device name"
 | 
					            string "serial bus 1 device 0 name"
 | 
				
			||||||
            default "usart1_dev1"   
 | 
					            default "usart1_dev1"   
 | 
				
			||||||
 | 
					        config USART1_USING_DMA
 | 
				
			||||||
 | 
					            bool "usart1 using DMA"
 | 
				
			||||||
 | 
					            default n
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
menuconfig BSP_USING_USART2
 | 
					menuconfig BSP_USING_USART2
 | 
				
			||||||
| 
						 | 
					@ -24,8 +27,11 @@ menuconfig BSP_USING_USART2
 | 
				
			||||||
            string "serial bus 2 driver name"
 | 
					            string "serial bus 2 driver name"
 | 
				
			||||||
            default "usart2_drv"
 | 
					            default "usart2_drv"
 | 
				
			||||||
        config SERIAL_2_DEVICE_NAME_0
 | 
					        config SERIAL_2_DEVICE_NAME_0
 | 
				
			||||||
                string "serial bus 2 device name"
 | 
					            string "serial bus 2 device 0 name"
 | 
				
			||||||
            default "usart2_dev2"   
 | 
					            default "usart2_dev2"   
 | 
				
			||||||
 | 
					        config USART2_USING_DMA
 | 
				
			||||||
 | 
					            bool "usart2 using DMA"
 | 
				
			||||||
 | 
					            default n
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
menuconfig BSP_USING_USART3
 | 
					menuconfig BSP_USING_USART3
 | 
				
			||||||
| 
						 | 
					@ -39,8 +45,11 @@ menuconfig BSP_USING_USART3
 | 
				
			||||||
            string "serial bus 3 driver name"
 | 
					            string "serial bus 3 driver name"
 | 
				
			||||||
            default "usart3_drv"
 | 
					            default "usart3_drv"
 | 
				
			||||||
        config SERIAL_3_DEVICE_NAME_0
 | 
					        config SERIAL_3_DEVICE_NAME_0
 | 
				
			||||||
                string "serial bus 3 device name"
 | 
					            string "serial bus 3 device 0 name"
 | 
				
			||||||
            default "usart3_dev3"   
 | 
					            default "usart3_dev3"   
 | 
				
			||||||
 | 
					        config USART3_USING_DMA
 | 
				
			||||||
 | 
					            bool "usart3 using DMA"
 | 
				
			||||||
 | 
					            default n
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
menuconfig BSP_USING_UART4
 | 
					menuconfig BSP_USING_UART4
 | 
				
			||||||
| 
						 | 
					@ -54,8 +63,11 @@ menuconfig BSP_USING_UART4
 | 
				
			||||||
            string "serial bus 4 driver name"
 | 
					            string "serial bus 4 driver name"
 | 
				
			||||||
            default "uart4_drv"
 | 
					            default "uart4_drv"
 | 
				
			||||||
        config SERIAL_4_DEVICE_NAME_0
 | 
					        config SERIAL_4_DEVICE_NAME_0
 | 
				
			||||||
                string "serial bus 4 device name"
 | 
					            string "serial bus 4 device 0 name"
 | 
				
			||||||
            default "uart4_dev4"  
 | 
					            default "uart4_dev4"  
 | 
				
			||||||
 | 
					        config USART4_USING_DMA
 | 
				
			||||||
 | 
					            bool "usart4 using DMA"
 | 
				
			||||||
 | 
					            default n 
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
menuconfig BSP_USING_UART5
 | 
					menuconfig BSP_USING_UART5
 | 
				
			||||||
| 
						 | 
					@ -69,6 +81,9 @@ menuconfig BSP_USING_UART5
 | 
				
			||||||
            string "serial bus 5 driver name"
 | 
					            string "serial bus 5 driver name"
 | 
				
			||||||
            default "uart5_drv"
 | 
					            default "uart5_drv"
 | 
				
			||||||
        config SERIAL_5_DEVICE_NAME_0
 | 
					        config SERIAL_5_DEVICE_NAME_0
 | 
				
			||||||
                string "serial bus 5 device name"
 | 
					            string "serial bus 5 device 0 name"
 | 
				
			||||||
            default "uart5_dev5"   
 | 
					            default "uart5_dev5"   
 | 
				
			||||||
 | 
					        config USART5_USING_DMA
 | 
				
			||||||
 | 
					            bool "usart5 using DMA"
 | 
				
			||||||
 | 
					            default n
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -322,8 +322,7 @@ static uint32 Stm32SerialConfigure(struct SerialDriver *serial_drv, int serial_o
 | 
				
			||||||
            USART_ITConfig(serial_hw_cfg->uart_device, USART_IT_RXNE, ENABLE);
 | 
					            USART_ITConfig(serial_hw_cfg->uart_device, USART_IT_RXNE, ENABLE);
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case OPER_CONFIG :
 | 
					        case OPER_CONFIG :
 | 
				
			||||||
            if (SIGN_OPER_DMA_RX == serial_dev_param->serial_set_mode)
 | 
					            if (SIGN_OPER_DMA_RX == serial_dev_param->serial_set_mode) {
 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                DMAConfiguration(serial_dev, serial_hw_cfg->uart_device);
 | 
					                DMAConfiguration(serial_dev, serial_hw_cfg->uart_device);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -378,8 +377,16 @@ static void DmaRxDoneIsr(struct Stm32Usart *serial, struct SerialDriver *serial_
 | 
				
			||||||
    if (DMA_GetFlagStatus(dma->RxStream, dma->RxFlag) != RESET) {
 | 
					    if (DMA_GetFlagStatus(dma->RxStream, dma->RxFlag) != RESET) {
 | 
				
			||||||
        x_base level = CriticalAreaLock();
 | 
					        x_base level = CriticalAreaLock();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        x_size_t recv_len = dma->SettingRecvLen - dma->LastRecvIndex;
 | 
					        x_size_t recv_len;
 | 
				
			||||||
        dma->LastRecvIndex = 0;
 | 
					
 | 
				
			||||||
 | 
					        x_size_t recv_total_index = dma->SettingRecvLen - DMA_GetCurrDataCounter(dma->RxStream);
 | 
				
			||||||
 | 
					        if (0 != recv_total_index) {
 | 
				
			||||||
 | 
					            recv_len = recv_total_index - dma->LastRecvIndex;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            recv_len = dma->SettingRecvLen - dma->LastRecvIndex;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        dma->LastRecvIndex = recv_total_index;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        CriticalAreaUnLock(level);
 | 
					        CriticalAreaUnLock(level);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (recv_len) SerialSetIsr(serial_dev, SERIAL_EVENT_RX_DMADONE | (recv_len << 8));
 | 
					        if (recv_len) SerialSetIsr(serial_dev, SERIAL_EVENT_RX_DMADONE | (recv_len << 8));
 | 
				
			||||||
| 
						 | 
					@ -397,17 +404,16 @@ static void UartIsr(struct Stm32Usart *serial, struct SerialDriver *serial_drv,
 | 
				
			||||||
    if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_RXNE) != RESET) {
 | 
					    if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_RXNE) != RESET) {
 | 
				
			||||||
        SerialSetIsr(serial_dev, SERIAL_EVENT_RX_IND);
 | 
					        SerialSetIsr(serial_dev, SERIAL_EVENT_RX_IND);
 | 
				
			||||||
        USART_ClearITPendingBit(serial_hw_cfg->uart_device, USART_IT_RXNE);
 | 
					        USART_ClearITPendingBit(serial_hw_cfg->uart_device, USART_IT_RXNE);
 | 
				
			||||||
    }
 | 
					    } else if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_IDLE) != RESET) {
 | 
				
			||||||
    if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_IDLE) != RESET) {
 | 
					 | 
				
			||||||
        DmaUartRxIdleIsr(serial_dev, dma, serial_hw_cfg->uart_device);
 | 
					        DmaUartRxIdleIsr(serial_dev, dma, serial_hw_cfg->uart_device);
 | 
				
			||||||
    }
 | 
					    } else if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_TC) != RESET) {
 | 
				
			||||||
    if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_TC) != RESET) {
 | 
					 | 
				
			||||||
        USART_ClearITPendingBit(serial_hw_cfg->uart_device, USART_IT_TC);
 | 
					        USART_ClearITPendingBit(serial_hw_cfg->uart_device, USART_IT_TC);
 | 
				
			||||||
    }
 | 
					    } else {
 | 
				
			||||||
        if (USART_GetFlagStatus(serial_hw_cfg->uart_device, USART_FLAG_ORE) == SET) {
 | 
					        if (USART_GetFlagStatus(serial_hw_cfg->uart_device, USART_FLAG_ORE) == SET) {
 | 
				
			||||||
            USART_ReceiveData(serial_hw_cfg->uart_device);
 | 
					            USART_ReceiveData(serial_hw_cfg->uart_device);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef BSP_USING_USART1
 | 
					#ifdef BSP_USING_USART1
 | 
				
			||||||
struct Stm32Usart serial_1;
 | 
					struct Stm32Usart serial_1;
 | 
				
			||||||
| 
						 | 
					@ -673,6 +679,9 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_driver_1.private_data = (void *)&serial_cfg_1;
 | 
					    serial_driver_1.private_data = (void *)&serial_cfg_1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_dev_param_1.serial_work_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param_1.serial_work_mode = SIGN_OPER_INT_RX;
 | 
				
			||||||
 | 
					#ifdef USART1_USING_DMA
 | 
				
			||||||
 | 
					    serial_dev_param_1.serial_work_mode = SIGN_OPER_DMA_RX;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    serial_device_1.haldev.private_data = (void *)&serial_dev_param_1;
 | 
					    serial_device_1.haldev.private_data = (void *)&serial_dev_param_1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NVIC_Configuration(serial_hw_cfg_1.irq);
 | 
					    NVIC_Configuration(serial_hw_cfg_1.irq);
 | 
				
			||||||
| 
						 | 
					@ -707,7 +716,6 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_device_2.hwdev_done = &hwdev_done;
 | 
					    serial_device_2.hwdev_done = &hwdev_done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_cfg_2.data_cfg = data_cfg_init;
 | 
					    serial_cfg_2.data_cfg = data_cfg_init;
 | 
				
			||||||
    serial_cfg_2.data_cfg.serial_baud_rate=BAUD_RATE_115200;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_hw_cfg_2.uart_device = USART2;
 | 
					    serial_hw_cfg_2.uart_device = USART2;
 | 
				
			||||||
    serial_hw_cfg_2.irq = USART2_IRQn;
 | 
					    serial_hw_cfg_2.irq = USART2_IRQn;
 | 
				
			||||||
| 
						 | 
					@ -715,6 +723,9 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_driver_2.private_data = (void *)&serial_cfg_2;
 | 
					    serial_driver_2.private_data = (void *)&serial_cfg_2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_dev_param_2.serial_work_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param_2.serial_work_mode = SIGN_OPER_INT_RX;
 | 
				
			||||||
 | 
					#ifdef USART2_USING_DMA
 | 
				
			||||||
 | 
					    serial_dev_param_2.serial_work_mode = SIGN_OPER_DMA_RX;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    serial_device_2.haldev.private_data = (void *)&serial_dev_param_2;
 | 
					    serial_device_2.haldev.private_data = (void *)&serial_dev_param_2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NVIC_Configuration(serial_hw_cfg_2.irq);
 | 
					    NVIC_Configuration(serial_hw_cfg_2.irq);
 | 
				
			||||||
| 
						 | 
					@ -749,7 +760,6 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_device_3.hwdev_done = &hwdev_done;
 | 
					    serial_device_3.hwdev_done = &hwdev_done;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_cfg_3.data_cfg = data_cfg_init;
 | 
					    serial_cfg_3.data_cfg = data_cfg_init;
 | 
				
			||||||
    serial_cfg_3.data_cfg.serial_baud_rate=BAUD_RATE_57600;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_hw_cfg_3.uart_device = USART3;
 | 
					    serial_hw_cfg_3.uart_device = USART3;
 | 
				
			||||||
    serial_hw_cfg_3.irq = USART3_IRQn;
 | 
					    serial_hw_cfg_3.irq = USART3_IRQn;
 | 
				
			||||||
| 
						 | 
					@ -757,6 +767,9 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_driver_3.private_data = (void *)&serial_cfg_3;
 | 
					    serial_driver_3.private_data = (void *)&serial_cfg_3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_dev_param_3.serial_work_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param_3.serial_work_mode = SIGN_OPER_INT_RX;
 | 
				
			||||||
 | 
					#ifdef USART3_USING_DMA
 | 
				
			||||||
 | 
					    serial_dev_param_3.serial_work_mode = SIGN_OPER_DMA_RX;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    serial_device_3.haldev.private_data = (void *)&serial_dev_param_3;
 | 
					    serial_device_3.haldev.private_data = (void *)&serial_dev_param_3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NVIC_Configuration(serial_hw_cfg_3.irq);
 | 
					    NVIC_Configuration(serial_hw_cfg_3.irq);
 | 
				
			||||||
| 
						 | 
					@ -798,6 +811,9 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_driver_4.private_data = (void *)&serial_cfg_4;
 | 
					    serial_driver_4.private_data = (void *)&serial_cfg_4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_dev_param_4.serial_work_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param_4.serial_work_mode = SIGN_OPER_INT_RX;
 | 
				
			||||||
 | 
					#ifdef USART4_USING_DMA
 | 
				
			||||||
 | 
					    serial_dev_param_4.serial_work_mode = SIGN_OPER_DMA_RX;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    serial_device_4.haldev.private_data = (void *)&serial_dev_param_4;
 | 
					    serial_device_4.haldev.private_data = (void *)&serial_dev_param_4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NVIC_Configuration(serial_hw_cfg_4.irq);
 | 
					    NVIC_Configuration(serial_hw_cfg_4.irq);
 | 
				
			||||||
| 
						 | 
					@ -839,6 +855,9 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_driver_5.private_data = (void *)&serial_cfg_5;
 | 
					    serial_driver_5.private_data = (void *)&serial_cfg_5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_dev_param_5.serial_work_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param_5.serial_work_mode = SIGN_OPER_INT_RX;
 | 
				
			||||||
 | 
					#ifdef USART5_USING_DMA
 | 
				
			||||||
 | 
					    serial_dev_param_5.serial_work_mode = SIGN_OPER_DMA_RX; 
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    serial_device_5.haldev.private_data = (void *)&serial_dev_param_5;
 | 
					    serial_device_5.haldev.private_data = (void *)&serial_dev_param_5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NVIC_Configuration(serial_hw_cfg_5.irq);
 | 
					    NVIC_Configuration(serial_hw_cfg_5.irq);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,9 @@ menuconfig BSP_USING_USART1
 | 
				
			||||||
        config SERIAL_1_DEVICE_NAME_0
 | 
					        config SERIAL_1_DEVICE_NAME_0
 | 
				
			||||||
            string "serial bus 1 device 0 name"
 | 
					            string "serial bus 1 device 0 name"
 | 
				
			||||||
            default "usart1_dev1"   
 | 
					            default "usart1_dev1"   
 | 
				
			||||||
 | 
					        config USART1_USING_DMA
 | 
				
			||||||
 | 
					            bool "usart1 using DMA"
 | 
				
			||||||
 | 
					            default n
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
menuconfig BSP_USING_USART2
 | 
					menuconfig BSP_USING_USART2
 | 
				
			||||||
| 
						 | 
					@ -26,6 +29,9 @@ menuconfig BSP_USING_USART2
 | 
				
			||||||
        config SERIAL_2_DEVICE_NAME_0
 | 
					        config SERIAL_2_DEVICE_NAME_0
 | 
				
			||||||
            string "serial bus 2 device 0 name"
 | 
					            string "serial bus 2 device 0 name"
 | 
				
			||||||
            default "usart2_dev2"   
 | 
					            default "usart2_dev2"   
 | 
				
			||||||
 | 
					        config USART2_USING_DMA
 | 
				
			||||||
 | 
					            bool "usart2 using DMA"
 | 
				
			||||||
 | 
					            default n
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
menuconfig BSP_USING_USART3
 | 
					menuconfig BSP_USING_USART3
 | 
				
			||||||
| 
						 | 
					@ -41,6 +47,9 @@ menuconfig BSP_USING_USART3
 | 
				
			||||||
        config SERIAL_3_DEVICE_NAME_0
 | 
					        config SERIAL_3_DEVICE_NAME_0
 | 
				
			||||||
            string "serial bus 3 device 0 name"
 | 
					            string "serial bus 3 device 0 name"
 | 
				
			||||||
            default "usart3_dev3"   
 | 
					            default "usart3_dev3"   
 | 
				
			||||||
 | 
					        config USART3_USING_DMA
 | 
				
			||||||
 | 
					            bool "usart3 using DMA"
 | 
				
			||||||
 | 
					            default n
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
menuconfig BSP_USING_UART4
 | 
					menuconfig BSP_USING_UART4
 | 
				
			||||||
| 
						 | 
					@ -56,6 +65,9 @@ menuconfig BSP_USING_UART4
 | 
				
			||||||
        config SERIAL_4_DEVICE_NAME_0
 | 
					        config SERIAL_4_DEVICE_NAME_0
 | 
				
			||||||
            string "serial bus 4 device 0 name"
 | 
					            string "serial bus 4 device 0 name"
 | 
				
			||||||
            default "uart4_dev4"  
 | 
					            default "uart4_dev4"  
 | 
				
			||||||
 | 
					        config USART4_USING_DMA
 | 
				
			||||||
 | 
					            bool "usart4 using DMA"
 | 
				
			||||||
 | 
					            default n 
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
menuconfig BSP_USING_UART5
 | 
					menuconfig BSP_USING_UART5
 | 
				
			||||||
| 
						 | 
					@ -71,4 +83,7 @@ menuconfig BSP_USING_UART5
 | 
				
			||||||
        config SERIAL_5_DEVICE_NAME_0
 | 
					        config SERIAL_5_DEVICE_NAME_0
 | 
				
			||||||
            string "serial bus 5 device 0 name"
 | 
					            string "serial bus 5 device 0 name"
 | 
				
			||||||
            default "uart5_dev5"   
 | 
					            default "uart5_dev5"   
 | 
				
			||||||
 | 
					        config USART5_USING_DMA
 | 
				
			||||||
 | 
					            bool "usart5 using DMA"
 | 
				
			||||||
 | 
					            default n
 | 
				
			||||||
    endif
 | 
					    endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -378,8 +378,16 @@ static void DmaRxDoneIsr(struct Stm32Usart *serial, struct SerialDriver *serial_
 | 
				
			||||||
    if (DMA_GetFlagStatus(dma->RxStream, dma->RxFlag) != RESET) {
 | 
					    if (DMA_GetFlagStatus(dma->RxStream, dma->RxFlag) != RESET) {
 | 
				
			||||||
        x_base level = CriticalAreaLock();
 | 
					        x_base level = CriticalAreaLock();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        x_size_t recv_len = dma->SettingRecvLen - dma->LastRecvIndex;
 | 
					        x_size_t recv_len;
 | 
				
			||||||
        dma->LastRecvIndex = 0;
 | 
					
 | 
				
			||||||
 | 
					        x_size_t recv_total_index = dma->SettingRecvLen - DMA_GetCurrDataCounter(dma->RxStream);
 | 
				
			||||||
 | 
					        if (0 != recv_total_index) {
 | 
				
			||||||
 | 
					            recv_len = recv_total_index - dma->LastRecvIndex;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            recv_len = dma->SettingRecvLen - dma->LastRecvIndex;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        dma->LastRecvIndex = recv_total_index;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        CriticalAreaUnLock(level);
 | 
					        CriticalAreaUnLock(level);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (recv_len) SerialSetIsr(serial_dev, SERIAL_EVENT_RX_DMADONE | (recv_len << 8));
 | 
					        if (recv_len) SerialSetIsr(serial_dev, SERIAL_EVENT_RX_DMADONE | (recv_len << 8));
 | 
				
			||||||
| 
						 | 
					@ -397,17 +405,16 @@ static void UartIsr(struct Stm32Usart *serial, struct SerialDriver *serial_drv,
 | 
				
			||||||
    if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_RXNE) != RESET) {
 | 
					    if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_RXNE) != RESET) {
 | 
				
			||||||
        SerialSetIsr(serial_dev, SERIAL_EVENT_RX_IND);
 | 
					        SerialSetIsr(serial_dev, SERIAL_EVENT_RX_IND);
 | 
				
			||||||
        USART_ClearITPendingBit(serial_hw_cfg->uart_device, USART_IT_RXNE);
 | 
					        USART_ClearITPendingBit(serial_hw_cfg->uart_device, USART_IT_RXNE);
 | 
				
			||||||
    }
 | 
					    } else if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_IDLE) != RESET) {
 | 
				
			||||||
    if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_IDLE) != RESET) {
 | 
					 | 
				
			||||||
        DmaUartRxIdleIsr(serial_dev, dma, serial_hw_cfg->uart_device);
 | 
					        DmaUartRxIdleIsr(serial_dev, dma, serial_hw_cfg->uart_device);
 | 
				
			||||||
    }
 | 
					    } else if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_TC) != RESET) {
 | 
				
			||||||
    if (USART_GetITStatus(serial_hw_cfg->uart_device, USART_IT_TC) != RESET) {
 | 
					 | 
				
			||||||
        USART_ClearITPendingBit(serial_hw_cfg->uart_device, USART_IT_TC);
 | 
					        USART_ClearITPendingBit(serial_hw_cfg->uart_device, USART_IT_TC);
 | 
				
			||||||
    }
 | 
					    } else {
 | 
				
			||||||
        if (USART_GetFlagStatus(serial_hw_cfg->uart_device, USART_FLAG_ORE) == SET) {
 | 
					        if (USART_GetFlagStatus(serial_hw_cfg->uart_device, USART_FLAG_ORE) == SET) {
 | 
				
			||||||
            USART_ReceiveData(serial_hw_cfg->uart_device);
 | 
					            USART_ReceiveData(serial_hw_cfg->uart_device);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef BSP_USING_USART1
 | 
					#ifdef BSP_USING_USART1
 | 
				
			||||||
struct Stm32Usart serial_1;
 | 
					struct Stm32Usart serial_1;
 | 
				
			||||||
| 
						 | 
					@ -673,6 +680,9 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_driver_1.private_data = (void *)&serial_cfg_1;
 | 
					    serial_driver_1.private_data = (void *)&serial_cfg_1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_dev_param_1.serial_work_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param_1.serial_work_mode = SIGN_OPER_INT_RX;
 | 
				
			||||||
 | 
					#ifdef USART1_USING_DMA
 | 
				
			||||||
 | 
					    serial_dev_param_1.serial_work_mode = SIGN_OPER_DMA_RX;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    serial_device_1.haldev.private_data = (void *)&serial_dev_param_1;
 | 
					    serial_device_1.haldev.private_data = (void *)&serial_dev_param_1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NVIC_Configuration(serial_hw_cfg_1.irq);
 | 
					    NVIC_Configuration(serial_hw_cfg_1.irq);
 | 
				
			||||||
| 
						 | 
					@ -714,6 +724,9 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_driver_2.private_data = (void *)&serial_cfg_2;
 | 
					    serial_driver_2.private_data = (void *)&serial_cfg_2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_dev_param_2.serial_work_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param_2.serial_work_mode = SIGN_OPER_INT_RX;
 | 
				
			||||||
 | 
					#ifdef USART2_USING_DMA
 | 
				
			||||||
 | 
					    serial_dev_param_2.serial_work_mode = SIGN_OPER_DMA_RX;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    serial_device_2.haldev.private_data = (void *)&serial_dev_param_2;
 | 
					    serial_device_2.haldev.private_data = (void *)&serial_dev_param_2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NVIC_Configuration(serial_hw_cfg_2.irq);
 | 
					    NVIC_Configuration(serial_hw_cfg_2.irq);
 | 
				
			||||||
| 
						 | 
					@ -755,6 +768,9 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_driver_3.private_data = (void *)&serial_cfg_3;
 | 
					    serial_driver_3.private_data = (void *)&serial_cfg_3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_dev_param_3.serial_work_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param_3.serial_work_mode = SIGN_OPER_INT_RX;
 | 
				
			||||||
 | 
					#ifdef USART3_USING_DMA
 | 
				
			||||||
 | 
					    serial_dev_param_3.serial_work_mode = SIGN_OPER_DMA_RX;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    serial_device_3.haldev.private_data = (void *)&serial_dev_param_3;
 | 
					    serial_device_3.haldev.private_data = (void *)&serial_dev_param_3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NVIC_Configuration(serial_hw_cfg_3.irq);
 | 
					    NVIC_Configuration(serial_hw_cfg_3.irq);
 | 
				
			||||||
| 
						 | 
					@ -796,6 +812,9 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_driver_4.private_data = (void *)&serial_cfg_4;
 | 
					    serial_driver_4.private_data = (void *)&serial_cfg_4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_dev_param_4.serial_work_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param_4.serial_work_mode = SIGN_OPER_INT_RX;
 | 
				
			||||||
 | 
					#ifdef USART4_USING_DMA
 | 
				
			||||||
 | 
					    serial_dev_param_4.serial_work_mode = SIGN_OPER_DMA_RX;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    serial_device_4.haldev.private_data = (void *)&serial_dev_param_4;
 | 
					    serial_device_4.haldev.private_data = (void *)&serial_dev_param_4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NVIC_Configuration(serial_hw_cfg_4.irq);
 | 
					    NVIC_Configuration(serial_hw_cfg_4.irq);
 | 
				
			||||||
| 
						 | 
					@ -837,6 +856,9 @@ int Stm32HwUsartInit(void)
 | 
				
			||||||
    serial_driver_5.private_data = (void *)&serial_cfg_5;
 | 
					    serial_driver_5.private_data = (void *)&serial_cfg_5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    serial_dev_param_5.serial_work_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param_5.serial_work_mode = SIGN_OPER_INT_RX;
 | 
				
			||||||
 | 
					#ifdef USART5_USING_DMA
 | 
				
			||||||
 | 
					    serial_dev_param_5.serial_work_mode = SIGN_OPER_DMA_RX;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    serial_device_5.haldev.private_data = (void *)&serial_dev_param_5;
 | 
					    serial_device_5.haldev.private_data = (void *)&serial_dev_param_5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    NVIC_Configuration(serial_hw_cfg_5.irq);
 | 
					    NVIC_Configuration(serial_hw_cfg_5.irq);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,11 +66,13 @@ static void TestSerialRecvTask(void *parameter)
 | 
				
			||||||
        read_param.buffer = &recv_data;
 | 
					        read_param.buffer = &recv_data;
 | 
				
			||||||
        read_param.read_length = 0;
 | 
					        read_param.read_length = 0;
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        KPrintf("ready to read data\n");
 | 
				
			||||||
        BusDevReadData(bus_device, &read_param);
 | 
					        BusDevReadData(bus_device, &read_param);
 | 
				
			||||||
        for (i = 0; i < read_param.read_length; i ++) {
 | 
					        for (i = 0; i < read_param.read_length; i ++) {
 | 
				
			||||||
            KPrintf("TestSerialRecvTask i %d char 0x%x\n", i, recv_data);
 | 
					            KPrintf("TestSerialRecvTask i %d char 0x%x\n", i, recv_data);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        KPrintf("send data %c\n", recv_data);
 | 
				
			||||||
        write_param.buffer = &recv_data;
 | 
					        write_param.buffer = &recv_data;
 | 
				
			||||||
        write_param.size = 1;
 | 
					        write_param.size = 1;
 | 
				
			||||||
        BusDevWriteData(bus_device, &write_param);
 | 
					        BusDevWriteData(bus_device, &write_param);
 | 
				
			||||||
| 
						 | 
					@ -141,7 +143,8 @@ static int SerialBusCheck(const char *bus_name, const char *driver_name, const c
 | 
				
			||||||
    bus->match(bus_driver, bus_device);
 | 
					    bus->match(bus_driver, bus_device);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*step 3: open bus_device, configure struct SerialDevParam if necessary*/
 | 
					    /*step 3: open bus_device, configure struct SerialDevParam if necessary*/
 | 
				
			||||||
    serial_dev_param->serial_set_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param->serial_set_mode = 0;
 | 
				
			||||||
 | 
					    serial_dev_param->serial_work_mode = SIGN_OPER_DMA_RX;//SIGN_OPER_INT_RX;
 | 
				
			||||||
    serial_dev_param->serial_stream_mode = SIGN_OPER_STREAM;
 | 
					    serial_dev_param->serial_stream_mode = SIGN_OPER_STREAM;
 | 
				
			||||||
    BusDevOpen(bus_device);
 | 
					    BusDevOpen(bus_device);
 | 
				
			||||||
    KPrintf("BusDevOpen done\n");
 | 
					    KPrintf("BusDevOpen done\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -303,6 +303,7 @@ static inline int SerialDevDMARead(struct SerialHardwareDevice *serial_dev, stru
 | 
				
			||||||
                serial_dev->serial_fifo.serial_rx->serial_rx_buffer, read_dma_length + serial_dev->serial_fifo.serial_rx->serial_recv_num - serial_cfg->data_cfg.serial_buffer_size);
 | 
					                serial_dev->serial_fifo.serial_rx->serial_rx_buffer, read_dma_length + serial_dev->serial_fifo.serial_rx->serial_recv_num - serial_cfg->data_cfg.serial_buffer_size);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        SerialDmaRxSetRecvLength(serial_dev, read_dma_length);
 | 
					        SerialDmaRxSetRecvLength(serial_dev, read_dma_length);
 | 
				
			||||||
 | 
					        read_param->read_length = read_dma_length;
 | 
				
			||||||
        CriticalAreaUnLock(lock);
 | 
					        CriticalAreaUnLock(lock);
 | 
				
			||||||
        return EOK;
 | 
					        return EOK;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1642,14 +1642,12 @@ void shellTask(void *param)
 | 
				
			||||||
    /* One input key from the the keyboard/uart may consist of mutliple characters (e.g., arrow keys). */
 | 
					    /* One input key from the the keyboard/uart may consist of mutliple characters (e.g., arrow keys). */
 | 
				
			||||||
    char data[KEY_LENGTH];
 | 
					    char data[KEY_LENGTH];
 | 
				
			||||||
    int i;
 | 
					    int i;
 | 
				
			||||||
    int data_len;
 | 
					    char data_len;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    while(RET_TRUE)
 | 
					    while(RET_TRUE)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (shell->read && shell->read(data) == 0) {
 | 
					        if (shell->read) {
 | 
				
			||||||
            //   KPrintf("in 1741 the char is:                    '%c' and ascii code is %d.\n\n",data,data);
 | 
					            data_len = shell->read(data);
 | 
				
			||||||
            // KPrintf("the buffer is:'%s'\n\n",shell->parser.);
 | 
					 | 
				
			||||||
            data_len = strlen(data);
 | 
					 | 
				
			||||||
            for (i = 0; i < data_len; i++) {
 | 
					            for (i = 0; i < data_len; i++) {
 | 
				
			||||||
                shellHandler(shell, data[i]);
 | 
					                shellHandler(shell, data[i]);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -46,13 +46,17 @@ void userShellWrite(char data)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
signed char userShellRead(char *data)
 | 
					signed char userShellRead(char *data)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    char read_length = 0;
 | 
				
			||||||
    struct BusBlockReadParam read_param;
 | 
					    struct BusBlockReadParam read_param;
 | 
				
			||||||
 | 
					    read_param.read_length = 0;
 | 
				
			||||||
    read_param.size = 1;
 | 
					    read_param.size = 1;
 | 
				
			||||||
    read_param.buffer = data;
 | 
					    read_param.buffer = data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    BusDevReadData(console, &read_param);
 | 
					    BusDevReadData(console, &read_param);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    read_length = (char)read_param.read_length;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return read_length;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef SHELL_ENABLE_FILESYSTEM
 | 
					#ifdef SHELL_ENABLE_FILESYSTEM
 | 
				
			||||||
| 
						 | 
					@ -107,7 +111,7 @@ int userShellInit(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /*Open the serial device in interrupt receiving and polling sending mode */
 | 
					    /*Open the serial device in interrupt receiving and polling sending mode */
 | 
				
			||||||
    struct SerialDevParam *serial_dev_param = (struct SerialDevParam *)console->private_data;
 | 
					    struct SerialDevParam *serial_dev_param = (struct SerialDevParam *)console->private_data;
 | 
				
			||||||
    serial_dev_param->serial_set_mode = SIGN_OPER_INT_RX;
 | 
					    serial_dev_param->serial_set_mode = 0;
 | 
				
			||||||
    serial_dev_param->serial_stream_mode = SIGN_OPER_STREAM;
 | 
					    serial_dev_param->serial_stream_mode = SIGN_OPER_STREAM;
 | 
				
			||||||
    BusDevOpen(console);
 | 
					    BusDevOpen(console);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue