-
凌欧LSK45芯片的DMA相关问题,求助大佬
用串口助手发送8个字节的数据,在接收中断里面通过DMA搬运数据。但接收的数据有问题,第一个字节的数据搬运2次,最后一个字节的数据丢失。voiduart_init(void){UART_InitTypeDefuart0_config;GPIO_InitTypeDefGPIO_InitStruct;//DMA_InitTypeDefuart0_dma_config;UART_StructInit(&uart0_config);//这些是默认配置,简单的应用只配置波特率即可//uart1_config.DUPLEX=DISABLE;//半双工模式使能,tx_data//uart1_config.MD_EN=DISABLE;//Multi-drop使能//uart1_config.CK_EN=DISABLE;//数据校验使能//uart1_config.CK_TYPE=0;//奇偶校验配置0:偶校验(EVEN);1:奇校验(ODD)//uart1_config.BIT_ORDER=0;//数据发送顺序配置0:LSB;1:MSB//uart1_config.STOP_LEN=0;//停止位长度配置0:1-Bit;1:2-Bit//uart1_config.BYTE_LEN=0;//数据长度配置0:8-Bit;1:9-Bit//uart1_config.ADR=0;//多机通讯时的从机地址//uart1_config.RX_DONE=DISABLE;//接收完成DMA请求使能//uart1_config.TX_BUF_EMPTY=DISABLE;//发送缓冲区空DMA请求使能//uart1_config.TXD_INV=DISABLE;//TXD输出极性取反//uart1_config.RXD_INV=DISABLE;//RXD输入极性取反//uart0_config.TX_DONE=ENABLE;//发送完成DMA请求使能uart0_config.RX_DONE=ENABLE;uart0_config.TX_BUF_EMPTY=ENABLE;//发送缓冲区空DMA请求使能uart0_config.IE=UART_IF_SendOver|UART_IF_RcvOver|UART_IF_SendBufEmpty;//中断配置uart0_config.BAUDRATE=115200;//波特率UART_Init(UART0,&uart0_config);/*UART0_485的GPIO配置*///uart0_485GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_15;GPIO_Init(GPIO0,&GPIO_InitStruct);GPIO0_PDO|=BIT15;//写1/*P0.14-RX0,UART0*/GPIO_StructInit(&GPIO_InitStruct);GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_14;GPIO_Init(GPIO0,&GPIO_InitStruct);/*P1.0-TX0UART0*/GPIO_InitStruct
2024-11-15 1