100 lines
2.8 KiB
C
100 lines
2.8 KiB
C
#include "dma.h"
|
||
#include "usart.h"
|
||
//////////////////////////////////////////////////////////////////////////////////
|
||
/*********************************************************************/
|
||
//DMA驱动代码
|
||
|
||
//STM32H7工程模板-HAL库函数版本
|
||
//DevEBox 大越创新
|
||
//淘宝店铺:mcudev.taobao.com
|
||
//淘宝店铺:shop389957290.taobao.com
|
||
|
||
/*********************************************************************/
|
||
//////////////////////////////////////////////////////////////////////////////////
|
||
|
||
DMA_HandleTypeDef UART1TxDMA_Handler; //DMA句柄
|
||
|
||
|
||
|
||
|
||
/*********************************************************************/
|
||
//DMAx的各通道配置
|
||
//这里的传输形式是固定的,这点要根据不同的情况来修改
|
||
//从存储器->外设模式/8位数据宽度/存储器增量模式
|
||
//DMA_Streamx:DMA数据流,DMA1_Stream0~7/DMA2_Stream0~7
|
||
|
||
//STM32H7工程模板-HAL库函数版本
|
||
//DevEBox 大越创新
|
||
//淘宝店铺:mcudev.taobao.com
|
||
//淘宝店铺:shop389957290.taobao.com
|
||
|
||
/*********************************************************************/
|
||
|
||
|
||
|
||
void MYDMA_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,UART1TxDMA_Handler); //将DMA与USART1联系起来(发送DMA)
|
||
|
||
//Tx DMA配置
|
||
UART1TxDMA_Handler.Instance=DMA_Streamx; //数据流选择
|
||
UART1TxDMA_Handler.Init.Request=DMA_REQUEST_USART1_TX; //USART1发送DMA
|
||
UART1TxDMA_Handler.Init.Direction=DMA_MEMORY_TO_PERIPH; //存储器到外设
|
||
UART1TxDMA_Handler.Init.PeriphInc=DMA_PINC_DISABLE; //外设非增量模式
|
||
UART1TxDMA_Handler.Init.MemInc=DMA_MINC_ENABLE; //存储器增量模式
|
||
UART1TxDMA_Handler.Init.PeriphDataAlignment=DMA_PDATAALIGN_BYTE; //外设数据长度:8位
|
||
UART1TxDMA_Handler.Init.MemDataAlignment=DMA_MDATAALIGN_BYTE; //存储器数据长度:8位
|
||
UART1TxDMA_Handler.Init.Mode=DMA_NORMAL; //外设流控模式
|
||
UART1TxDMA_Handler.Init.Priority=DMA_PRIORITY_MEDIUM; //中等优先级
|
||
UART1TxDMA_Handler.Init.FIFOMode=DMA_FIFOMODE_DISABLE;
|
||
UART1TxDMA_Handler.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL;
|
||
UART1TxDMA_Handler.Init.MemBurst=DMA_MBURST_SINGLE; //存储器突发单次传输
|
||
UART1TxDMA_Handler.Init.PeriphBurst=DMA_PBURST_SINGLE; //外设突发单次传输
|
||
|
||
HAL_DMA_DeInit(&UART1TxDMA_Handler);
|
||
HAL_DMA_Init(&UART1TxDMA_Handler);
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*********************************************************************/
|
||
//DMA驱动代码
|
||
|
||
//STM32H7工程模板-HAL库函数版本
|
||
//DevEBox 大越创新
|
||
//淘宝店铺:mcudev.taobao.com
|
||
//淘宝店铺:shop389957290.taobao.com
|
||
|
||
/*********************************************************************/
|
||
|
||
|
||
|
||
|