新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2023-1-30
- 在线时间
- 3 小时
|
1金钱
利用库函数版本,进行了初始化void MYDMA_receive_Config(DMA_Stream_TypeDef *DMA_Streamx)
{
if((u32)DMA_Streamx>(u32)DMA2)//得到当前stream是属于DMA2还是DMA1
{
__HAL_RCC_DMA2_CLK_ENABLE();//DMA2时钟使能
}else
{
__HAL_RCC_DMA1_CLK_ENABLE();//DMA1时钟使能
}
__HAL_LINKDMA(&UART1_Handler,hdmatx,UART1RxDMA_Handler); //将DMA与USART1联系起来(发送DMA)
//Rx DMA配置
UART1RxDMA_Handler.Instance=DMA_Streamx; //数据流选择
UART1RxDMA_Handler.Init.Request=DMA_REQUEST_USART1_RX; //USART1发送DMA
UART1RxDMA_Handler.Init.Direction=DMA_PERIPH_TO_MEMORY; //存储器到外设
UART1RxDMA_Handler.Init.PeriphInc=DMA_PINC_DISABLE; //外设非增量模式
UART1RxDMA_Handler.Init.MemInc=DMA_MINC_ENABLE; //存储器增量模式
UART1RxDMA_Handler.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE; //外设数据长度:8位
UART1RxDMA_Handler.Init.MemDataAlignment=DMA_MDATAALIGN_BYTE; //存储器数据长度:8位
UART1RxDMA_Handler.Init.Mode=DMA_NORMAL; //外设流控模式
UART1RxDMA_Handler.Init.Priority=DMA_PRIORITY_MEDIUM; //中等优先级
UART1RxDMA_Handler.Init.FIFOMode=DMA_FIFOMODE_DISABLE;
UART1RxDMA_Handler.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL;
UART1RxDMA_Handler.Init.MemBurst=DMA_MBURST_SINGLE; //存储器突发单次传输
UART1RxDMA_Handler.Init.PeriphBurst=DMA_PBURST_SINGLE; //外设突发单次传输
HAL_DMA_DeInit(&UART1RxDMA_Handler);
HAL_DMA_Init(&UART1RxDMA_Handler);
}
然后调用 HAL_UART_Receive_DMA(&UART1_Handler,ReceiveBuff,6);这个接口,无法实现接收到数据
|
|